Q:innodb buffer pool和Qcache的緩存區(qū)別?
A:
1、Qcacche緩存的是SQL語句及對應(yīng)的結(jié)果集,緩存在內(nèi)存,最簡單的情況是SQL一直不重復(fù),那Qcache的命令率肯定是0;
2、buffer pool中緩存的是整張表中的數(shù)據(jù),緩存在內(nèi)存,SQL再變只要數(shù)據(jù)都在內(nèi)存,那么命中率就是100%。
一、查詢緩存(QueryCache)
1、關(guān)于查詢緩存機(jī)制
開啟了緩存,會自動將查詢語句和結(jié)果集返回到內(nèi)存,下次再查直接從內(nèi)存中取;
查詢緩存會跟蹤系統(tǒng)中每張表,若表發(fā)生變化,則和該張表相關(guān)的所有查詢緩存全部失效,這是和buffer pool緩存機(jī)制很大的區(qū)別;
檢查查詢緩存時,MYSQL不會對SQL做任何處理,它精確的使用客戶端傳來的查詢,只要字符大小寫或注釋有點不同,查詢緩存就認(rèn)為是不同的查詢;
任何一個包含不確定的函數(shù)(比如now()、curren_date())的查詢不會被緩存。