溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL中query_cache_type參數(shù)與使用的示例分析

發(fā)布時間:2021-07-02 09:46:53 來源:億速云 閱讀:154 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“MySQL中query_cache_type參數(shù)與使用的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“MySQL中query_cache_type參數(shù)與使用的示例分析”這篇文章吧。

MySQL設(shè)置查詢緩存的用意:

  把查詢到的結(jié)果緩存起來,下次再執(zhí)行相同查詢時就可以直接從結(jié)果集中?。贿@樣就比重新查一遍要快的多。

查詢緩存的最終結(jié)果是事與愿違:

  之所以查詢緩存并沒有能起到提升性能的做用,客觀上有如下兩點原因

  1、把SQL語句的hash值作為鍵,SQL語句的結(jié)果集作為值;這樣就引起了一個問題如 select user from mysql.user 和 SELECT user FROM mysql.user

  這兩個將會被當成不同的SQL語句,這個時候就算結(jié)果集已經(jīng)有了,但是一然用不到。

  2、當查詢所基于的低層表有改動時與這個表有關(guān)的查詢緩存都會作廢、如果對于并發(fā)度比較大的系統(tǒng)這個開銷是可觀的;對于作廢結(jié)果集這個操作也是要用并發(fā)

  訪問控制的,就是說也會有鎖。并發(fā)大的時候就會有Waiting for query cache lock 產(chǎn)生。

  3、至于用不用還是要看業(yè)務(wù)模型的。

如果何配置查詢緩存:

  query_cache_type 這個系統(tǒng)變量控制著查詢緩存工能的開啟的關(guān)閉。

  query_cache_type=0時表示關(guān)閉,1時表示打開,2表示只要select 中明確指定SQL_CACHE才緩存。

  這個參數(shù)的設(shè)置有點奇怪,1、如果事先查詢緩存是關(guān)閉的然而用 set @@global.query_cache_type=1; 會報錯

  ERROR 1651 (HY000): Query cache is disabled; restart the server with query_cache_type=1 to enable it

2、如果事先是打開著的嘗試去閉關(guān)它,那么這個關(guān)閉也是不完全的,這種情況下查詢還是會去嘗試查找緩存。

  最好的關(guān)閉查詢緩存的辦法就是把my.cnf 中的query_cache_type=0然后再重啟mysql。

查詢緩存相關(guān)的系統(tǒng)變量:

  have_query_cache  表示這個mysql版本是否支持查詢緩存。

  query_cache_limit   表示單個結(jié)果集所被允許緩存的最大值。

  query_cache_min_res_unit  每個被緩存的結(jié)果集要占用的最小內(nèi)存。

  query_cache_size  用于查詢緩存的內(nèi)存大小。

如何監(jiān)控查詢緩存的命中率:

  Qcache_free_memory  查詢緩存目前剩余空間大小。

  Qcache_hits      查詢緩存的命中次數(shù)。

  Qcache_inserts      查詢緩存插入的次數(shù)。

  也就是說緩存的命中率為 Qcache_hits/(Qcache_hits+Qcache_inserts)

以上是“MySQL中query_cache_type參數(shù)與使用的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI