日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

详解MySQL查询缓存

發布時間:2025/3/21 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解MySQL查询缓存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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


  當服務器頻繁收到相同的請求而數據庫中的表數據變化頻率又不高,查詢緩存是非常有用的,它可以大大提高應用程序的訪問效率。很多Web服務器利用這一原理基于數據庫的內容動態生成頁面。


  查詢緩存并不會返回過期的數據,當數據庫中的表數據發生變化時,相關的查詢緩存會自動清除。但是查詢緩存并不會在多個mysqld服務器實例中更新同一個表的數據時有效。


  查詢緩存對于存儲在多個數據庫分區表中的數據是無效的。如果查詢涉及多個數據庫分區表,查詢緩存會自動失效。


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


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


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


  2)在服務器超負荷時使用查詢緩存是非常有效的。一個由多個SELECT組合成的復雜查詢使用查詢緩存的效率肯定是非常高效的,但如果有頻繁插入數據的話,不使用緩存的話比起使用查詢緩存效率要高的多。


  查詢緩存的執行原理


  對于下面這兩種查詢,查詢緩存會當作兩種不同形式的查詢,因為查詢緩存會嚴格比較兩次查詢的字節是否完全相同。對于不同的字符串,不同的數據表,不同的協議版本,不同的字符集都會當作不同的查詢。


SELECT?*?FROM?tbl_name Select?*?from?tbl_name

  在以下情況下并不適合使用查詢緩存


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


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


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


  當查詢緩存包含了以下函數時,查詢緩存并不會有效。


  查詢緩存不適用的情況


  1)查詢使用用戶自定義的函數或存儲過程。


  2)查詢包含了用戶變量或本地存儲的程序變量。


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


  4)查詢涉及到數據庫分區表。


  5)查詢是如下的類型:


SELECT?...?LOCK?IN?SHARE?MODE SELECT?...?FOR?UPDATE SELECT?...?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,這是由它的系統結構所決定的。在應用時設置為多大合適,還是要根據實際情況而定。



總結

以上是生活随笔為你收集整理的详解MySQL查询缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。