首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 查詢緩存配置、監控與清除完整操作指南

     編輯:MySQL 綜合教學

一、查詢緩存原理與適用場景

查詢緩存儲存 SELECT 語句文本與對應結果集映射。相同查詢(區分大小寫、空白)再次到達時,直接返回緩存結果,跳過解析、優化、執行階段,大幅提升讀密集型負載效能。

適用:數據變更頻率低、重複查詢多的場景(如配置表、字典表、報表查詢)。
不適用:高寫入頻率表、包含非確定性函數(NOW(), RAND())的查詢、大結果集。

二、配置啟用查詢緩存

編輯 my.cnf [mysqld] 區段:

query_cache_size=10M          # 緩存總大小,0 為關閉
query_cache_type=1            # 1=開啟(預設), 2=DEMAND(按需), 0=關閉
query_cache_limit=1M          # 單條查詢結果最大緩存
query_cache_min_res_unit=4K   # 最小分配塊,大查詢可調大減少碎片

重啟 MySQL 生效。驗證:

SHOW VARIABLES LIKE '%query_cache%';

三、查詢緩存狀態監控指標

SHOW STATUS LIKE 'Qcache%';
變數含義健康判讀
Qcache_free_blocks空閒記憶體塊數過大說明碎片嚴重,需 FLUSH QUERY CACHE
Qcache_free_memory空閒記憶體位元組持續下降需擴容或清理
Qcache_hits命中次數命中率 = Hits / (Hits + Inserts)
Qcache_inserts插入次數同上
Qcache_lowmem_prunes因記憶體不足清理次數持續增長 = 記憶體不足或碎片嚴重
Qcache_not_cached未緩存查詢數非 SELECT 或含不確定函數
Qcache_queries_in_cache當前緩存查詢數監控緩存利用率
Qcache_total_blocks總塊數配合 free_blocks 看碎片率

四、測試驗證緩存效果

  命令作用影響範圍
  FLUSH QUERY CACHE整理碎片,合併空閒塊,不刪除現有緩存緩存結構優化
  RESET QUERY CACHE完全清空查詢緩存所有內容所有緩存失效
  FLUSH TABLES關閉所有打開表,**順帶清空查詢緩存**表鎖 + 緩存清空
  SET GLOBAL query_cache_size=0動態禁用查詢緩存(需重啟才能重新啟用)全域關閉


七、FLUSH 系列命令速查表

FLUSH HOSTS              -- 清空主機緩存表(解決 Host blocked)
FLUSH LOGS               -- 切換二進制日誌文件
FLUSH PRIVILEGES         -- 重載授權表(權限修改後必執行)
FLUSH TABLES             -- 關閉所有表 + 清空查詢緩存
FLUSH TABLES WITH READ LOCK -- 全域讀鎖(備份前常用)
FLUSH STATUS             -- 重置狀態變數
FLUSH QUERY CACHE        -- 整理查詢緩存碎片
-- 以下已棄用,改用 RESET MASTER/SLAVE
FLUSH MASTER / FLUSH SLAVE

八、重要參數 sync_binlog 補充

  • sync_binlog=0:不強制 fsync,性能最好,崩潰丟數據風險最大(預設)
  • sync_binlog=1:每次提交 fsync,最安全,性能損耗約 10-20%
  • sync_binlog=N:每 N 次提交 fsync,折中方案

生產環境建議 sync_binlog=1 配合電池備援 RAID 卡(BBWC/FBWC)平衡性能與安全。

九、總結

  1. 查詢緩存對讀多寫少場景效果顯著,但 MySQL 5.7+ 已棄用,8.0 移除,建議遷移至 Redis/應用層緩存。
  2. 監控 Qcache_lowmem_prunes 與 Qcache_free_blocks 及時發現碎片與容量問題。
  3. 區分 FLUSH QUERY CACHE(整理)與 RESET QUERY CACHE(清空),避免誤操作導致緩存雪崩。
  4. 權限變更後必執行 FLUSH PRIVILEGES,主從切換涉及 RESET MASTER/SLAVE。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved