您好,登錄后才能下訂單哦!
這篇文章主要介紹怎樣在mysql進行查詢緩存及失敗的解決方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
都知道函數在使用前需要弄清楚參數的屬性,這樣才能對函數的使用有較好的了解。有些小伙伴學習了查詢緩存后,直接進行了下一步的實戰操作。這里小編想提醒大家,開始操作之前一定要先設置參數,不然就會出現問題。
(1) have_query_cache表示是否支持查詢緩存,YES表示支持
(2) query_cache_type表示緩存類型,OFF表示關閉查詢緩存,ON表示開啟查詢緩存,DEMAND表示用戶自定義查詢緩存
(3) query_cache_limit表示支持的最大單條查詢sql數據量
(4) query_cache_min_res_unit表示查詢緩存最小單位
(5) query_cache_size表示查詢緩存空間大小
(6) query_cache_wlock_invalidate表示查詢緩存是否支持寫鎖,OFF表示不支持,即讀取數據不考慮寫鎖,ON表示支持,即讀取數據會被寫鎖阻塞
MySQL的查詢緩存默認是關閉的,需要手動配置參數query cache type,來開啟查詢緩存。query cache type該參數的可取值有三個 :
1)OFF或0 :查詢緩存功能關閉;
2)ON或1 :查詢緩存功能打開,SELECT的結果符合緩存條件即會緩存,否則,不予緩存,顯示指定SQL_NO_CACHE,不予緩存
3)DEMAND或2 :查詢緩存功能按需進行,顯示指定SQL_CACHE的SELECT語句才會緩存;其他均不予緩存。
在/usr/my.cnf配置中,增加以下配置 :
query_cache_type=1
配置完畢之后,重啟服務即可生效;
然后就可以在命令行執行SQL語句進行驗證,執行一條比較耗時的SQL語句,然后再多執行幾次,查看后面幾次的執行時間;獲取通過查看查詢緩存的緩存命中數,來判定是否走查詢緩存。
查詢緩存使用
(1) 只有字符串相等查詢sql才使用相同緩存,即select name from city與SELECT name FROM city不使用同一個緩存。
(2) 在query_cache_type為ON的情況下,默認所有查詢都使用緩存,我們可以使用sql_no_cache顯示指定某個查詢不使用緩存
select sql_no_cache name from city;
(3) 在query_cache_type為DEMAND的情況下,需要使用sql_cache指定某個查詢使用緩存
select sql_cache name from city;
在表的結構或數據發生改變時,查詢緩存中的數據不再有效。如INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE會導致緩存數據失效。所以查詢緩存適合有大量相同查詢的應用,不適合有大量數據更新的應用。
一旦表數據進行任何一行的修改,基于該表相關cache立即全部失效。
以上是“怎樣在mysql進行查詢緩存及失敗的解決方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。