MySQL 查詢緩存將 SELECT 語句文本及其結果集存放於記憶體,適用於「讀多寫少、數據變動頻率低」的表。典型場景如產品目錄、靜態配置表等。若表頻繁更新(如訂單、日誌表),緩存會頻繁失效,反而增加開銷。
SELECT * FROM t 與 select * from t 視為不同查詢。NOW()、RAND()、UUID() 等。將高頻更新欄位(如庫存量)移至獨立表,核心屬性(如商品名、規格)留在主表。主表緩存不再因庫存更新而失效。
緩存空間不足會導致舊條目被淘汰。根據業務量級將 query_cache_size 設為 64MB~256MB 甚至更大,並監控 Qcache_lowmem_prunes 指標。
SHOW VARIABLES LIKE 'query_cache%';
SHOW STATUS LIKE 'Qcache%';
重點關注 query_cache_type 是否為 ON、Qcache_hits / Qcache_inserts 比值(命中率)。