詳解MySQL查詢快取

來源:互聯網
上載者:User

標籤:查詢快取   mysql   資料庫最佳化   

  查詢快取是指儲存使用SELECT文法查詢到的返回到用戶端的文本。當相同的請求再次發生時,會從查詢快取中擷取資料,而非再執行一遍查詢。查詢快取是共用Session會話的,所以一個用戶端的請求可能與另一個用戶端的請求得到相同的結果。


  當伺服器頻繁收到相同的請求而資料庫中的表資料變化頻率又不高,查詢快取是非常有用的,它可以大大提高應用程式的訪問效率。很多Web伺服器利用這一原理基於資料庫的內容動態產生頁面。


  查詢快取並不會返回到期的資料,當資料庫中的表資料發生變化時,相關的查詢快取會自動清除。但是查詢快取並不會在多個mysqld伺服器執行個體中更新同一個表的資料時有效。


  查詢快取對於儲存在多個資料庫分區表中的資料是無效的。如果查詢涉及多個資料庫分區表,查詢快取會自動失效。


  如果要禁用查詢快取的話,只需在啟動時將query_cache_size的大小設定為0即可。


  查詢快取在一定情況下會提升系統的效能,但並不代表在任何情況下都會提升系統的效能,某些情況下,甚至可能會降低系統的效能。如


  1)人們對於級區設定查詢快取的分歧很大,有些人認為可能超出了啟用它的好處。查詢快取的大小設定為幾十兆的時候通常是有效,但是設定成幾百兆的時候就不一定了。


  2)在伺服器超負荷時使用查詢快取是非常有效。一個由多個SELECT組合成的複雜查詢使用查詢快取的效率肯定是非常高效的,但如果有頻繁插入資料的話,不使用緩衝的話比起使用查詢快取效率要高的多。


  查詢快取的執行原理


  對於下面這兩種查詢,查詢快取會當作兩種不同形式的查詢,因為查詢快取會嚴格比較兩次查詢的位元組是否完全相同。對於不同的字串,不同的資料表,不同的協議版本,不同的字元集都會當作不同的查詢。


SELECT * FROM tbl_nameSelect * from tbl_name

  在以下情況下並不適合使用查詢快取


  1)查詢是外部查詢的一個子查詢


  2)在預存程序,觸發器或函數中執行的查詢


  如果資料表發生變化,如增加/修改/刪除表結構或表資料,都會導致查詢快取失效,緩衝的資料會自動從緩衝中清除。


  當查詢快取包含了以下函數時,查詢快取並不會有效。


650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/78/F3/wKiom1aEzirD2jl1AABX2u2YMAk603.png" title="QQQQ.png" alt="wKiom1aEzirD2jl1AABX2u2YMAk603.png" />

  查詢快取不適用的情況


  1)查詢使用使用者自訂的函數或預存程序。


  2)查詢包含了使用者變數或本機存放區的程式變數。


  3)涉及到資料庫中的mysql,INFORMATION_SCHEMA和performance——schema表。


  4)查詢涉及到資料庫分區表。


  5)查詢是如下的類型:


SELECT ... LOCK IN SHARE MODESELECT ... FOR UPDATESELECT ... INTO OUTFILE ...SELECT ... INTO DUMPFILE ...SELECT * FROM ... WHERE autoincrement_col IS NULL

  6)查詢用到了暫存資料表。


  7)查詢沒有用到資料表。


  8)查詢包含了警告。


  9)使用者查詢的表中擁有特定的許可權。


  使用查詢快取和不使用查詢快取的兩種方式

SELECT SQL_CACHE id, name FROM customer;SELECT SQL_NO_CACHE id, name FROM customer;

  配置查詢快取


  當查詢快取query_cache_size設定為一個非0的數值時,最小的容量是40KB,這是由它的系統結構所決定的。在應用時設定為多大合適,還是要根據實際情況而定。



本文出自 “這個人的IT世界” 部落格,請務必保留此出處http://favccxx.blog.51cto.com/2890523/1730405

詳解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.