MySQL查詢快取

2021-09-26 03:01:13 字數 1248 閱讀 8563

查詢快取的工作原理 : 快取select 操作的結果集和sql語句;新的select語句,先去查詢快取,判斷是否存在可用的記錄集。

判斷標準 : 與快取的sql語句是否完全一樣,區分大小寫(簡單任務儲存了乙個key-value結構,key為sql value為sql查詢結果集)

query_cache_type:  0  ----- 不啟用查詢快取,預設值

1 ----- 啟用查詢快取 ,只要符合查詢快取的要求,客戶端的查詢語句和記錄集都可以快取起來,供其他客戶端使用,加上sql_no_cache將不快取

2 ----- 啟用查詢快取,只要查詢語句中新增了引數: sql_cache,且符合查詢快取的要求,客戶端的查詢語句和記錄集,則可以快取起來

query_cache_size:  允許設定query_cache_size的值最小為40k 預設是1m 推薦設定為 64m/128m

query_cache_limit: 限制查詢快取區最大能快取的查詢記錄集,預設是1m

show status like ' qcache%' 命令可檢視快取情況

1 當查詢語句中有一些不確定的資料是,則不會被快取。包含函式now(), current_date()等類似函式,或者使用者自定義的函式,儲存函式,使用者變數等都不會快取

2 當查詢結果大於 query_cache_limit設定的值時,結果不會被快取

3 對於innodb引擎說,當乙個語句在事務中修改了某個表,那麼在這個事務提交之前,所有與這個表相關的查詢都無法被快取,因此長時間執行事務,會大大降低快取命中率

4 查詢的表是系統表

5 查詢語句不能涉及到表

1 在查詢之前必須先檢查是否命中,浪費計算資源

2 如果這個查詢可以被快取,那麼執行完成後,mysql發現查詢快取中沒有這個查詢,則會把結果寫入查詢快取,會帶來額外開銷

3  針對表進行寫入或更行新資料時,將對應表的所有快取都設定失效

4 如果查詢快取很大或者碎片很多時,這個操作可能帶來大量的系統消耗

以讀為主的業務,資料生成之後就不常改變的業務

如 門戶類、新聞類、報表類等

mysql資料快取查詢 Mysql查詢快取

查詢快取 mysql提供了一種快取型別,會快取整個select查詢結果。mysql查詢快取儲存查詢返回的完整結果。當查詢命中該快取,mysql會立即返回結果,跳過了解析 優化和執行階段。以下兩種情況不能被快取 頻繁更新 修改的的表,所有快取資料都會失效,mysql查詢快取會跟蹤查詢中涉及的表,如果這...

mysql 查詢快取

show variables like cache my.cnf設定 mysql慢日誌 mysql有乙個功能就是可以log下來執行的比較慢的sql語句,預設是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在mysql啟動的時候加入一些引數。如果在my.cnf裡面修改,需增加如下幾行 lo...

mysql查詢快取

查詢快取不開啟 r mysql query select username from user where signup date curdate 開啟查詢快取 today date y m d r mysql query select username from user where signup...