萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MariaDB 查詢緩存配置詳解:參數、狀態監控與清理命令

前言

MariaDB 繼承了 MySQL 的查詢緩存機制,通過緩存 SELECT 結果集提升重複查詢性能。本文匯總核心配置參數、狀態監控指標及清理命令,便於 DBA 快速調優。

一、核心配置參數

參數默認值說明
have_query_cacheYES只讀,顯示編譯是否支持查詢緩存
query_cache_typeON緩存開關:OFF(0)/ON(1)/DEMAND(2)。DEMAND 需 SQL 加 SQL_CACHE 提示
query_cache_size0緩存總內存(字節),0 表示禁用。建議 64M~256M,過大導致鎖競爭
query_cache_limit1048576 (1M)單個查詢結果最大緩存大小,超過不緩存
query_cache_min_res_unit4096 (4K)緩存塊最小分配單位,碎片化嚴重時可適當增大
query_cache_wlock_invalidateOFF寫鎖時是否失效緩存,ON 可減少髒讀但增大鎖爭用

參數展示

二、查看緩存運行狀態

MariaDB [(none)]> SHOW STATUS LIKE 'Qcache%';
+-------------------------+--------+
| Variable_name           | Value  |
+-------------------------+--------+
| Qcache_free_blocks      | 0      |  -- 空閒內存塊數
| Qcache_free_memory      | 0      |  -- 空閒內存字節
| Qcache_hits             | 0      |  -- 命中次數
| Qcache_inserts          | 0      |  -- 插入次數
| Qcache_lowmem_prunes    | 0      |  -- 內存不足被剔除次數
| Qcache_not_cached       | 0      |  -- 未緩存查詢數(非 SELECT、超限等)
| Qcache_queries_in_cache | 0      |  -- 當前緩存查詢數
| Qcache_total_blocks     | 0      |  -- 總塊數
+-------------------------+--------+

狀態變量

關鍵健康度指標

  • 命中率 = Qcache_hits / (Qcache_hits + Qcache_inserts),建議 > 80%。
  • 碎片率 = Qcache_free_blocks / Qcache_total_blocks,> 20% 考慮調大 query_cache_min_res_unit 或執行 FLUSH QUERY CACHE 整理。
  • 剔除率 = Qcache_lowmem_prunes / Qcache_inserts,頻繁剔除說明 query_cache_size 不足。

三、清理/重置查詢緩存

-- 整理碎片,不刪除現有緩存
FLUSH QUERY CACHE;

-- 完全清空緩存
RESET QUERY CACHE;

四、最佳實踐建議

  1. 讀多寫少(報表、配置表)開啟緩存,query_cache_size=128M、query_cache_type=ON。
  2. 寫入頻繁(交易、日志)關閉緩存,query_cache_type=0、query_cache_size=0,避免全局鎖成為瓶頸。
  3. 監控腳本定期採集 Qcache_* 指標,配合 Grafana 告警。
  4. MySQL 5.7+ / MariaDB 10.2+ 已棄用查詢緩存,建議改用 Redis 等外部分布式緩存。
copyright © 萬盛學電腦網 all rights reserved