SET GLOBAL QUERY_CACHE_SIZE=80000000;
設置好查詢緩存的大小就好了。好比設置個20MB.SET GLOBAL QUERY_CACHE_SIZE=20000000;mysql
mysql會將查詢SQL和結果集存到緩存中,等下次遇到相同的SQL語句時,結果集從緩存中讀取。算法
1.設置緩存大小時,至少給它40000(即40kb),不然會報錯,由於mysql啓用緩存得花這麼多內存。sql
最多給多少看狀況啦,本身學習用的1mb都很夠了,生產環境下看訪問量和緩存命中率等因素再調整,不過通常都有幾百mb吧。緩存
2.如下幾個個參數能夠看出設置緩存後的效果。學習
能夠用show status like 'Qcache_%' 查看。code
Qcache_hits 緩存命中數內存
Qcache_not_cached 沒有沒緩存的query數it
Qcache_free_memory 空閒緩存大小(若是空閒太多,說明你設置的緩存過大了,調小一些)ast
Qcache_inserts 載入緩存的query數sed
緩存保存query使用的算法是LRU(即least recently used 最近最少使用)。
這 個是mysql默認的緩存算法,能夠經過一些參數的修改使mysql使用其餘緩存算法,不過沒這個必要,LRU已是一個很是優秀的算法了。根據這個算 法,當mysql收到一條query,先去緩存中找,沒找到的話就把這條query以及結果集寫進緩存,若是剛好緩存已經寫滿,那麼mysql會將緩存中 最近最少使用的那條query刪除,而後寫入新的query和結果集。因此能夠這麼理解緩存保存query的時間:若是緩存夠大,query數不 多,query會一直呆在緩存中;緩存空