關於QueryCache的一次打臉
阿新 • • 發佈:2018-10-01
默認 進行 lec mysql l數據庫 命中 stat 什麽 關於
【背景問題】
前一段時間給一套MySQL數據庫加上了監控,運行一段時間後有人反饋監控到的insert,update,delete,select的數量中select的數量有像比
本應該的量少了不少!
我用的是Com_select這個status來監控的select語句的數量,應該不會有什麽差錯呀;沒想到呀,沒想到!那個數據庫實例是開啟了Query
cache的,所以這個就紮心啦! 這種情況下Com_select只是記錄了select語句中沒有命中Query_cache的那一部分。
【默認情況下的select統計方式】
默認情況下沒有開啟Query_cache所以我們可以用Com_select這個status來監控MySQL處理的select語句總數;
所以總的處理成功的select語句的數量就是 Com_select的值
【Query_cache開啟情況下select的統計方式】
在Query_cache開啟的情況下針對select語句的統計要分兩種情況進行討論
1): 如果這條select語句命中了Query_cache那麽Qcache_hits這個status就會加1,Com_select不受影響
2):如果這條select語句沒有命中Query_cache那麽Com_select這個status加1,Querycache_hit不受影響
所以總的select語句的數量就是Com_select + Querycache_hits 的值
Query cache的命中率就是 Querycache_hits / (Com_select + Querycache_hits)
-----
關於QueryCache的一次打臉