MySQL查詢緩存總結

能夠經過下面的SQL查看當前查詢緩存相關參數狀態:緩存

  1. show variables like '%query_cache%';

          

          1)  query_cache_typespa

           查詢緩存類型:blog

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

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

      若是query_cache_type=1,而又不想利用查詢緩存中的數據,能夠使用下面的SQLio

                select SQL_NO_CACHE * from table where condition;table

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

      若是query_cache_type=2,要使用緩存的話,須要使用SQL_CACHE開關參數:im

                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; -- 關閉全部打開的表,同事該操做將會清空查詢緩存中的內容。

相關文章
相關標籤/搜索