《MySQL優化方向之查詢緩存的介紹,提升我們的數據庫性能》要點:
本文介紹了MySQL優化方向之查詢緩存的介紹,提升我們的數據庫性能,希望對您有用。如果有疑問,可以聯系我們。
MySQL的查詢緩存是我們優化MySQL數據庫的一個方向,我們有需要介紹一下,看看MySQL的查詢緩存是什么?它是怎么工作的?什么時候不會走查詢緩存?以及為什么查詢緩存不生效等等問題.
查詢緩存是什么
將某個select語句和相應的查詢結果緩存起來,如果以后有相同的select語句的話,就直接從查詢緩存中讀取結果,不必要再執行表查詢.
這里指的是同一個select語句.
僅僅對select語句有效.
因為不必要執行表查詢,所以更快.
它不會返回過時的數據,如果數據有改變,整個查詢緩存將被沖洗.
僅僅適用于以讀為主的應用,頻繁寫應用不得當.
反省MySQL數據庫是否支持查詢緩存
在命令行登錄MySQL服務器之后,執行SHOW VARIABLES LIKE 'have_query_cache'語句就能夠看到你的MySQL服務器是否開啟了查詢緩存,參考下圖,如果為yes表現支持查詢緩存,否則表現不支持查詢緩存,該值有0,1,2三種.
0表現不支持.
1表現能夠緩存的都緩存,除非你指定SQL_NO_CACHE的除外.
2表現僅僅明確指定了SQL_CACHE的才會緩存.
開啟SQL查詢緩存
SELECT SQL_CACHE 字段名1,字段名2 FROM 表名 WHERE
SELECT SQL_NO_CACHE 字段名1,字段名2 FROM 表名 WHERE
前者是開啟,后者是不開啟查詢緩存
不緩存的SQL語句特征
如果我們的SELECT語句里面包括有一些動態實時的函數,那么這個select語句將無法被查詢緩存緩存起來.
now函數 表現現在的時間,是一個動態的值,查詢緩存肯定無法使用,還有rand函數也是一樣,是一個隨機返回值,還有found_rows函數,返回的是行數,會變,還有很多同類的函數,查詢緩存都是不生效的.
為什么緩存不了
除了前面說的SQL_NO_CACHE外,還有兩個配置參數控制著查詢緩存,一個是query_cache_limit和query_cache_size,前者控制當查詢成果大于多少的時候將不會被緩存起來,而后者控制查詢緩存最大的尺寸.
查詢緩存什么時候失效
如果我們的相應成果有改變,那么查詢緩存將失效,或者我們人為手動執行了下面這個SQL語句,那么所有的查詢緩存將失效:
FLUSH QUERY CACHE
相應的視頻請點擊:MySQL性能提升計劃之查詢緩存介紹
《MySQL優化方向之查詢緩存的介紹,提升我們的數據庫性能》是否對您有啟發,歡迎查看更多與《MySQL優化方向之查詢緩存的介紹,提升我們的數據庫性能》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8690.html