mysql 查詢快取

2022-01-17 08:50:15 字數 1287 閱讀 9519

1.當前表的查詢快取狀態查詢:

show variables like '%query_cache%';
2.sql語句會從查詢快取讀條件:

sql完全一致:即使多乙個空格或者大小寫不同都認為不同;如果使用不同的字符集、不同的協議等也會被認為是不同的查詢而分別進行快取。

3.檢視查詢快取命中次數:

show status like 'qcache_hits';
4.查詢快取失效:

在表的結構或資料發生改變時,查詢快取中的資料不再有效。有這些insert、update、 delete、truncate、alter table、drop table或drop database會導致快取資料失效。所以查詢快取適合有大量相同查詢的應用,不適合有大量資料更新的應用。

5.儲存至查詢快取:

快取會在記憶體中開闢一塊記憶體(query_cache_size)來維護快取資料,其中有大概40k的空間是用來維護快取的元資料的(什麼是元資料:例如空間記憶體,資料表和查詢結果的對映,sql和查詢結果的對映等.

儲存圖示:

6.查詢快取缺點:

1.查詢快取需要占用一定的記憶體;2.每次查詢執行前都要先檢查快取,故不一定有利;

7.調優:

1.如果需要快取的查詢很少,可以將query_cache_type設定為demand,然後對需要快取的查詢後面新增sql_cache。

2.如果寫入操作很多,這個時候可以禁用快取,並將快取大小query_cache_size設定為0,這樣就不會占用記憶體。

3.如果寫操作存在,也想用查詢快取,那麼就讓寫操作成批量的執行,而不是逐個執行。

8.具體情況分析:

衡量開啟快取是否對系統有效能提公升是乙個很難的話題

1. 通過快取命中率判斷, 快取命中率 = 快取命中次數 (qcache_hits) / 查詢次數 (com_select)

2. 通過快取寫入率, 寫入率 = 快取寫入次數 (qcache_inserts) / 查詢次數 (qcache_inserts)

3. 通過 命中-寫入率 判斷, 比率 = 命中次數 (qcache_hits) / 寫入次數 (qcache_inserts), 高效能mysql中稱之為比較能反映效能提公升的指數,一般來說達到3:1則算是查詢快取有效,而最好能夠達到10:1

9.快取查詢分析步驟:

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...