MySQL查詢快取

來源:互聯網
上載者:User

標籤:

MySQL查詢快取

用於儲存MySQL查詢語句返回的完整結果,被命中時,MySQL會立即返回結果,省去解析、最佳化和執行等階段。

如何檢查緩衝?

MySQL儲存結果於緩衝中:

把SELECT語句本身做hash計算,計算結果為key,查詢結果作為value。

不會被緩衝的資料:

查詢語句中有一些不確定資料時,不會緩衝,例如NOW(),CURRENT_TIME(),一般來說,如果查詢中包含自訂函數、儲存函數、使用者變數、暫存資料表、mysql庫中系統資料表、或者任何包含許可權的表,一般都不會被緩衝。

緩衝會帶來額外開銷:

1、每個查詢都得先檢查是否命中;

2、檢查結果要先緩衝;

與緩衝相關的變數:

查看緩衝變數SHOW GLOBAL VARIABLES LIKE ‘query_cache%‘;

query_cache_limit:單個緩衝對象的最大值,超出的不緩衝,手動使用SQL_NO_CACHE可以人為避免嘗試緩衝返回結果超出此參數限定值的語句。

query_cache_min_res_unit:儲存緩衝的最小記憶體塊;計算方法:(query_cache_size-Qcache_free_memory)/Qcache_queries_in_cache

query_cache_size:總空間,單位為位元組,大小必須是1024倍數。MySQL啟動時,會一次分配並立即初始化這裡指定大小的記憶體空間,這意味著,如果修改此大小,會清空緩衝,並重新初始化;

query_cache_type:查詢快取類型;是否開啟緩衝功能,開啟方式有三種{ON|OFF|DEMAND};

DEMAND:意味著SELECT語句明確使用SQL_CACHE選項是才會緩衝;query_cache_wlock_invalidate:如果某個資料表被其他使用者串連鎖住了,是否仍然從緩衝中返回結果,OFF表示返回。

如何判斷命中率:

SHOW GLOBAL STATUS LIKE ‘Qcache%‘;

Qcache_free_blocks:空閑塊數

Qcache_free_memory:空閑空間

Qcache_hits:叫用次數

Qcache_inserts:向緩衝空間中寫入緩衝的次數

Qcache_lowmem_prunes:因為記憶體小,騰出記憶體的次數

Qcache_not_cached:沒被緩衝的個數

Qcache_queries_in_cache:在緩衝中緩衝的插入的查詢的個數

Qcache_total_blocks:總塊數

磁碟重組:FLUSH QUERY_CACHE

清除緩衝:RESET QUERY_CACHE

計算命中率:

SHOW GLOBAL STATUS WHERE Variable_name=‘Qcache_hits‘ OR Variable_name=‘Com_select‘;

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| Com_select    | 10     |

| Qcache_hits   | 0      |

+---------------+-------+

Qcache_hits/( Com_select+ Qcache_hits)

還需要參考命中和寫入的比率,即Qcache_hits/ Qcache_inserts的值,此值如果能大於3:1,則表明緩衝也是有效,能達到10:1,為比較理想的情況。如果命中率很低,比值也徘徊在1:1,那說明緩衝沒什麼卵用,還是關了吧。

緩衝最佳化思路:

使用緩衝時如何能夠讓快取命中,提高緩衝的有效性:

1、批量寫入而非多次單個寫入,這樣即可僅一次的影響緩衝

2、過大的緩衝空間,可能會使大量的緩衝失效時導致造成伺服器假死,所以緩衝空間不宜過大

3、必要時,使用SQL_NO_CACHE手動控制緩衝

4、對寫密集型的應用情境來說,禁用緩衝反而能提高效能

MySQL查詢快取

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.