MySQL查詢緩存總結


可以通過下面的SQL查看當前查詢緩存相關參數狀態:

  1. show variables like '%query_cache%';

          

          1)  query_cache_type

           查詢緩存類型:

           0 表示始終不適用查詢緩存;

           1 表示始終使用查詢緩存;

      如果query_cache_type=1,而又不想利用查詢緩存中的數據,可以使用下面的SQL

                select SQL_NO_CACHE * from table where condition;

           2 表示按需要使用查詢緩存。

      如果query_cache_type=2,要使用緩存的話,需要使用SQL_CACHE開關參數:

                select SQL_CACHE * from table where condition;

          2)  query_cache_size,默認情況下為0,表示為查詢緩存預留的內存為0,則無法使用查詢緩存。

 

          2. show warnings; 查看MySQL警告。

          3. 緩存條件

     查詢緩存可以看做是SQL文本和查詢結果的映射。如果第二次查詢的SQL和第一次查詢的SQL完全相同(注意必須是完全相同,即使多一個空格或者大小寫不同都認為不同)且開啟了查詢緩存,那么第二次查詢就直接從查詢緩存中取結果,可以通過下面的SQL來查看緩存命中次數(是個累加值):

          show status like 'Qcache_hits';

    另外即使完全相同的SQL,如果使用不同的字符集、不同的協議等也會被認為是不同的查詢而分別進行緩存。

 

          4. 緩存數據失效時機

              在表結構或數據發生改變時,查詢緩存中的數據不再有效。INSERT UPDATEtruncatealter tabledrop tabledrop database會導致緩存數據失效。所以查詢緩存適合有大量相同查詢的應用,不適合有大量數據更新的應用。

 

          5. 清理查詢緩存

              flush query cache; -- 清理查詢緩存內存碎片

              reset query cache; -- 從查詢緩存中移除所有查詢

              flush tables; -- 關閉所有打開的表,同事該操作將會清空查詢緩存中的內容。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM