程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL緩存查詢

MySQL緩存查詢

編輯:關於MYSQL數據庫

show variables like 'query_cache%'

query_cache_limit
如果單個查詢結果大於這個值,則不Cache
query_cache_size
分配給QC的內存。如果設為0,則相當於禁用QC。要注意QC必須使用大約40KB來存儲它的結構,如果設定小於40KB,則相當於禁用QC。QC存儲的最小單位是1024 byte,所以如果你設定了一個不是1024的倍數的值,這個值會被四捨五入到最接近當前值的等於1024的倍數的值。
query_cache_type
0 完全禁止QC,不受SQL語句控制(另外可能要注意的是,即使這裡禁用,上面一個參數所設定的內存大小還是會被分配);1啟用QC,可以在SQL語句使用SQL_NO_CACHE禁用;2可以在SQL語句使用SQL_CACHE啟用。
query_cache_min_res_unit
每次給QC結果分配內存的大小

show status like 'Qcache%'

Qcache_free_blocks
當一個表被更新之後,和它相關的cache blocks將被free。但是這個block依然可能存在隊列中,除非是在隊列的尾部。這些blocks將會被統計到這個值來。可以用FLUSH QUERY CACHE語句來清空free blocks。
Qcache_free_memory
可用內存,如果很小,考慮增加query_cache_size
Qcache_hits
自MySQL進程啟動起,cache的命中數量
Qcache_inserts
自MySQL進程啟動起,被增加進QC的數量
Qcache_lowmem_prunes
由於內存過少而導致QC被刪除的條數。加大query_cache_size,盡可能保持這個值0增長。
Qcache_not_cached
自MySQL進程啟動起,沒有被cache的只讀查詢數量(包括select,show,use,desc等)
Qcache_querIEs_in_cache
當前被cache的SQL數量
Qcache_total_blocks
在QC中的blocks數。一個query可能被多個blocks存儲,而這幾個blocks中的最後一個,未用滿的內存將會被釋放掉。例如一個QC結果要占6KB內存,如果query_cache_min_res_unit是4KB,則最後將會生成3個blocks,第一個block用來存儲sql語句文本,這個不會被統計到query+cache_size裡,第二個block為4KB,第三個block為2KB(先allocate4KB,然後釋放多馀的2KB)。每個表,當第一個和它有關的SQL查詢被CACHE的時候,會使用一個block來存儲表信息。也就是說,block會被用在三處地方:表信息,SQL文本,查詢結果。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved