MySQL查詢快取總結

來源:互聯網
上載者:User

標籤:like   適合   flush   from   一個   tables   oba   sel   表示   

可以通過下面的SQL查看當前查詢快取相關參數狀態:  SHOW VARIABLES LIKE ‘%query_cache%‘;輸出結果類似下面:   query_cache_type     查詢快取類型,有0、1、2三個取值。0則不使用查詢快取。1表示始終使用查詢快取。2表示按需使用查詢快取。     如果query_cache_type為1而又不想利用查詢快取中的資料,可以用下面的SQL: SELECT SQL_NO_CACHE * FROM my_table WHERE condition;    如果值為2,要使用緩衝的話,需要使用SQL_CACHE切換參數:SELECT SQL_CACHE * FROM my_table WHERE condition;  query_cache_size     預設情況下query_cache_size為0,表示為查詢快取預留的記憶體為0,則無法使用查詢快取。所以我們需要設定query_cache_size的值: SET GLOBAL query_cache_size = 134217728;    注意上面的值如果設得太小不會生效。比如我用下面的SQL設定query_cache_size大小: SET GLOBAL query_cache_size = 4000;  SHOW WARNINGS;    會返回下面的結果:   緩衝條件     查詢快取可以看做是SQL文本和查詢結果的映射。如果第二次查詢的SQL和第一次查詢的SQL完全相同(注意必須是完全相同,即使多一個空格或者大小寫不同都認為不同)且開啟了查詢快取,那麼第二次查詢就直接從查詢快取中取結果,可以通過下面的SQL來查看快取命中次數(是個累加值): SHOW STATUS LIKE ‘Qcache_hits‘;    另外即使完全相同的SQL,如果使用不同的字元集、不同的協議等也會被認為是不同的查詢而分別進行緩衝。  快取資料失效時機     在表的結構或資料發生改變時,查詢快取中的資料不再有效。有這些INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE會導致快取資料失效。所以查詢快取適合有大量相同查詢的應用,不適合有大量資料更新的應用。  可以使用下面三個SQL來清理查詢快取: 1、FLUSH QUERY CACHE; // 清理查詢快取記憶體片段。2、RESET QUERY CACHE; // 從查詢快取中移出所有查詢。3、FLUSH TABLES; //關閉所有開啟的表,同時該操作將會清空查詢快取中的內容。

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.