MySQL query cache從4.1版本開始提供了,不過值今天本人才對其進行研究。默認配置下,MySQL的該功能是沒有啟動的,可能你通過show variables like ‘%query_cache%';會發現其變量have_query_cache的值是yes,MYSQL初學者很容易以為這個參數為YES就代表開啟了查詢緩存,實際上是不對的,該參數表示當前版本的MYSQL是否支持Query Cache,實際上是否開啟查詢緩存是看另外一個參數的值:query_cache_size ,該值為0,表示禁用query cache,而默認配置正是配置為0。
配置方法:
在MYSQL的配置文件my.ini或my.cnf中找到如下內容:
# Query cache is used to cache SELECT results and later return them
# without actual executing the same query once again. Having the query
# cache enabled may result in significant speed improvements, if your
# have a lot of identical queries and rarely changing tables. See the
# “Qcache_lowmem_prunes” status variable to check if the current value
# is high enough for your load.
# Note: In case your tables change very often or if your queries are
# textually different every time, the query cache may result in a
# slowdown instead of a performance improvement.
query_cache_size=0
以上信息是默認配置,其注釋意思是說,MYSQL的查詢緩存用于緩存select查詢結果,并在下次接收到同樣的查詢請求時,不再執行實際查詢處理而直接返回結果,有這樣的查詢緩存能提高查詢的速度,使查詢性能得到優化,前提條件是你有大量的相同或相似的查詢,而很少改變表里的數據,否則沒有必要使用此功能。可以通過Qcache_lowmem_prunes變量的值來檢查是否當前的值滿足你目前系統的負載。注意:如果你查詢的表更新比較頻繁,而且很少有相同的查詢,最好不要使用查詢緩存。
具體配置方法:
1.將query_cache_size設置為具體的大小,具體大小是多少取決于查詢的實際情況,但最好設置為1024的倍數,參考值32M。
2.增加一行:query_cache_type=1
query_cache_type參數用于控制緩存的類型,注意這個值不能隨便設置,必須設置為數字,可選項目以及說明如下:

如果設置為0,那么可以說,你的緩存根本就沒有用,相當于禁用了。但是這種情況下query_cache_size設置的大小系統是否要為其分配呢,這個問題有待于測試?
如果設置為1,將會緩存所有的結果,除非你的select語句使用SQL_NO_CACHE禁用了查詢緩存。
如果設置為2,則只緩存在select語句中通過SQL_CACHE指定需要緩存的查詢。
OK,配置完后的部分文件如下:
query_cache_size=128M
query_cache_type=1
保存文件,重新啟動MYSQL服務,然后通過如下查詢來驗證是否真正開啟了:
新聞熱點
疑難解答