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)于查詢緩存機制

  開啟了緩存,會自動將查詢語句和結(jié)果集返回到內(nèi)存,下次再查直接從內(nèi)存中??;

  查詢緩存會跟蹤系統(tǒng)中每張表,若表發(fā)生變化,則和該張表相關(guān)的所有查詢緩存全部失效,這是和buffer pool緩存機制很大的區(qū)別;

  檢查查詢緩存時,MYSQL不會對SQL做任何處理,它精確的使用客戶端傳來的查詢,只要字符大小寫或注釋有點不同,查詢緩存就認為是不同的查詢;

  任何一個包含不確定的函數(shù)(比如now()、curren_date())的查詢不會被緩存。

網(wǎng)友評論