您好,登錄后才能下訂單哦!
本篇文章為大家展示了MySQL取消Query Cache的原因是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
MySQL查詢緩存是查詢結果緩存。它將以SEL開頭的查詢與哈希表進行比較,如果匹配,則返回上一次查詢的結果。進行匹配時,查詢必須逐字節(jié)匹配,例如 SELECT * FROM t1; 不等于select * from t1;,此外,一些不確定的查詢結果無法被緩存,任何對表的修改都會導致這些表的所有緩存無效。因此,適用于查詢緩存的最理想的方案是只讀,特別是需要檢查數(shù)百萬行后僅返回數(shù)行的復雜查詢。如果你的查詢符合這樣一個特點,開啟查詢緩存會提升你的查詢性能。
隨著技術的進步,經(jīng)過時間的考驗,MySQL的工程團隊發(fā)現(xiàn)啟用緩存的好處并不多。
首先,查詢緩存的效果取決于緩存的命中率,只有命中緩存的查詢效果才能有改善,因此無法預測其性能。
其次,查詢緩存的另一個大問題是它受到單個互斥鎖的保護。在具有多個內(nèi)核的服務器上,大量查詢會導致大量的互斥鎖爭用。
通過基準測試發(fā)現(xiàn),大多數(shù)工作負載最好禁用查詢緩存(5.6的默認設置):query_cache_type = 0
如果你認為會從查詢緩存中獲得好處,請按照實際情況進行測試。
MySQL8.0取消查詢緩存的另外一個原因是,研究表明,緩存越靠近客戶端,獲得的好處越大。關于這份研究請參考https://proxysql.com/blog/scaling-with-proxysql-query-cache/
下圖源自上面的網(wǎng)址:
除此之外,MySQL8.0新增加了對性能干預的工具,例如,現(xiàn)在可以利用查詢重寫插件,在不更改應用程序的同時,插入優(yōu)化器提示語句。另外,還有像ProxySQL這樣的第三方工具,它們可以充當中間緩存。
綜合以上原因,MySQL8.0不再提供對查詢緩存的支持,如果用戶從5.7版本升級至8.0,考慮使用查詢重寫或其他緩存。
上述內(nèi)容就是MySQL取消Query Cache的原因是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。