MySQL關閉查詢快取(QC)的兩種方法

2022-08-27 18:30:17 字數 1272 閱讀 4076

mysql query cache 會快取select 查詢,安裝時預設是開啟的,但是如果對錶進行insert, update, delete, truncate, alter table, drop table, or drop database等操作時,之前的快取會無效並且刪除。這樣一定程度上也會影響我們資料庫的效能。所以對一些頻繁的變動表的情況開啟快取是不明智的。還有一種情況我們測試資料庫效能的時候也要關閉快取,避免快取對我們測試資料的影響。下面介紹兩種不使用快取的方案:

第一種:方案

首先檢視資料庫的快取是開啟的

show variables like "%cache%";

mysql關閉查詢快取(qc)的兩種方法

檢視快取命中情況

show status like "%qcache%";

mysql關閉查詢快取(qc)的兩種方法

然後對錶查詢了兩次,可以看到,第二次明顯的快取了資料。然後檢視命中快取變為了1

mysql關閉查詢快取(qc)的兩種方法

下面就開始關閉快取。關閉快取有兩種放法,一種臨時的,一種永久的。

臨時的直接再命令列執行

set global query_cache_size=0

set global query_cache_type=0

永久的修改配置檔案my.cnf ,新增下面的配置即可。

query_cache_type=0

query_cache_size=0

我們用永久的修改方法

mysql關閉查詢快取(qc)的兩種方法

注意改完要重啟資料庫,然後再進去看看

mysql關閉查詢快取(qc)的兩種方法

然後開始查詢 很明顯沒有命中快取。

mysql關閉查詢快取(qc)的兩種方法

第二種方案:

再開啟快取的情況下我們對sql語句做一些改動

select sql_no_cache count(*) from users; 不快取

select sql_cache count(*) from users; 快取(也可以不加,預設快取已經開啟了)

首先檢視資料庫快取開啟中

mysql關閉查詢快取(qc)的兩種方法

快取命中為0

mysql關閉查詢快取(qc)的兩種方法

然後開始查詢,查詢兩次後發現快取命中率依然為0,很明顯沒有查詢快取。

mysql關閉查詢快取(qc)的兩種方法

然後不加sql_no_cache 查詢,很明顯快取命中為1,開始查詢快取了

mysql關閉查詢快取(qc)的兩種方法

MySQL關閉查詢快取(QC)的兩種方法

mysql query cache 會快取select 查詢,安裝時預設是開啟的,但是如果對錶進行insert,update,delete,truncate,alter table,drop table,or drop database等操作時,之前的快取會無效並且刪除。這樣一定程度上也會影響我們資...

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