MySQL關閉查詢緩存(QC)的兩種方法
阿新 • • 發佈:2018-05-21
from com 技術分享 兩種 查詢 data- 命中 sql語句 count 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)的兩種方法