mysql應用中常用到的優化

使用連接池
對于訪問數據庫來說,建立連接的代價比較昂貴,因此,我們有必要建立”連接池”以提高訪問的性能。我們可以把連接當作對象或者設備,池中又有許多已經建立的連接,訪問本來需要與數據庫的連接的地方,都改為和池相連,池臨時分配連接供訪問使用,結果返回后,訪問將連接交還。
減少對mysql 的訪問
避免對同一數據做重復檢索:
應用中需要理清楚對數據庫的訪問邏輯,需要對相同表的訪問,盡量集中在相同sql訪問,一次提取結果,減少對數據庫的重復訪問。
使用mysql query cache:
作用:查詢緩存存儲select 查詢的文本以及發送給客戶端的相應結果。如果隨后收到一個相同的查詢,服務器從查詢緩存中重新得到查詢結果,而不再需要解析和執行查詢。
適用范圍:不發生數據更新的表。當表更改(包括表結構和表數據)后,查詢緩存值的相關條目被清空。
查詢緩存的主要參數設置:
show variables like ‘%query_cache%’;
have_query_cache 表明服務器在安裝使已經配置了高速緩存
query_cache_size 表明緩存區大小,單位為m
query_cache_type 的變量值從0 到2,含義分別為
0 或者off(緩存關閉)
1 或者on(緩存打開,使用sql_no_cache 的select 除外)
2 或者demand(只有帶sql_cache 的select 語句提供高速緩存)
在show status 中,你可以監視查詢緩存的性能:
變量含義
qcache_queries_in_cache 在緩存中已注冊的查詢數目
qcache_inserts 被加入到緩存中的查詢數目
qcache_hits 緩存采樣數數目
qcache_lowmem_prunes 因為缺少內存而被從緩存中刪除的查詢數目
qcache_not_cached 沒有被緩存的查詢數目( 不能被緩存的, 或由于
query_cache_type)
qcache_free_memory 查詢緩存的空閑內存總數
qcache_free_blocks 查詢緩存中的空閑內存塊的數目
qcache_total_blocks 查詢緩存中的塊的總數目
加cache層:
cache(高速緩存)、memory(內存)、hard disk(硬盤)都是數據存取單元,但存取速度卻有很大差異,呈依次遞減的順序。對于cpu 來說,它可以從距離自己最近的cache 高速地存取數據,而不是從內存和硬盤以低幾個數量級的速度來存取數據。而cache 中所存儲的數據,往往是cpu 要反復存取的數據,有特定的機制(或程序)來保證cache 內數據的命中率(hit rate)。因此,cpu 存取數據的速度在應用高速緩存后得到了巨大的提高。
因為將數據寫入高速緩存的任務由cache manager 負責,所以對用戶來說高速緩存的內容肯定是只讀的。需要你做的工作很少,程序中的sql 語句和直接訪問dbms 時沒有分別,返回的結果也看不出有什么差別。而數據庫廠商往往會在db server 的配置文件中提供與cache 相關的參數,通過修改它們,可針對我們的應用優化cache 的管理。

更多相關文章請關注PHP中文網(www.php.cn)!

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享