MySQL Query Cache 效率的計算

轉載自 MySQL Query Cache 效率的計算.

原來 MySQL 本身就可以做 Cache 的功能~ 🙂

Query Cache 在提高資料庫性能方面具有非常重要的作用。

其設定也非常簡單,僅需要在配置檔寫入兩行: query_cache_type 和 query_cache _size,而且 MySQL 的 query cache 非常快!而且一旦命中,就直接發送給用戶端,節約大量的 CPU 時間。

當然,非 SELECT 語句對緩衝是有影響的,它們可能使緩衝中的資料過期。一個 UPDATE 語句引起的部分表修改,將導致對該表所有的緩衝資料失效,這是 MySQL 為了平衡性能而沒有採取的措施。因為,如果每次 UPDATE 需要檢查修改的資料,然後撤出部分緩衝將導致代碼的複雜度增加。

query_cache_type 0 代表不使用緩衝, 1 代表使用緩衝,2 代表根據需要使用。

設置 1 代表緩衝永遠有效,如果不需要緩衝,就需要使用如下語句:
SELECT SQL_NO_CACHE * FROM my_table WHERE ...

如果設置為 2 ,需要開啟緩衝,可以用如下語句:
SELECT SQL_CACHE * FROM my_table WHERE ...

用 SHOW STATUS 可以查看緩衝的情況:
mysql> show status like 'Qca%';

+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_queries_in_cache | 8 |
| Qcache_inserts | 545875 |
| Qcache_hits | 83951 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 2343256 |
| Qcache_free_memory | 33508248 |
| Qcache_free_blocks | 1 |
| Qcache_total_blocks | 18 |
+-------------------------+----------+
8 rows in set (0.00 sec)

如果需要計算命中率,需要知道伺服器執行了多少 SELECT 語句:
mysql> show status like 'Com_sel%';

+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Com_select | 2889628 |
+---------------+---------+
1 row in set (0.01 sec)

在本例中, MySQL 命中了 2,889,628 條查詢中的 83,951 條,而且 INSERT 語句只有 545,875 條。因此,它們兩者的和和280萬的總查詢相比有很大差距,因此,我們知道本例使用的緩衝類型是 2 。

而在類型是 1 的例子中, Qcache_hits 的數值會遠遠大於 Com_select 。

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈MySQL Query Cache 效率的計算〉中有 8 則留言

  1. 前輩想請問一下~如果說有幾萬筆的資料再做Query的時候
    該怎麼做才會快呢??

    因為我目前的www.mindway.asia我覺得速度有點慢
    同時也不太清楚慢的原因,不知前輩可否給予指導呢!!!

  2. 前輩不好意思~在詢問一下
    因為我透過Chrome來看的時候有時候都會發現
    光是連到某一頁得時間就好幾秒不知道我該怎麼解決???

    圖片顯示太多導致顯示速度很慢~請問是否該使用tomact去實作負載平衡
    加速圖片顯示呢? 可是我沒做過不知道該怎麼做才好

    如果做了的話是要把圖片也另存好幾份嗎??

    不知道前輩可否替我解惑!!!

    我對於速度慢真的感到超無力的...我有用Curl的指令以及youtube api

    但總覺得價在家裡的主機還比外面的空間快的感覺....

    1. 你先把圖片和程式分開 Domain, 然後還慢的話, 再來把圖片與程式的機器拆開看看, 然後再來看看問題在哪邊~ 🙂

  3. 想請問一下~是否是用Tomcat呢?

    因為這部分我沒有經驗~所以想請問前輩您的意見!

    By the way 如果前輩不嫌麻煩願意解惑的話~可否與我交換MSN

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料