簡單點說,就是對於相同SQL可以跳過SQL解析和執行計畫產生階段,直接回傳快取的結果。也就是快取完整的SELECT 查詢結果。
快取存放在一個哈希表中,透過一個哈希值引用。哈希值包括:查詢本身、目前查詢資料庫、客戶端協定等等。 但是需要注意的是SQL語句的任何不同都會導致快取命中失敗(空格、註解、變數名稱不同)
但是查詢快取也有嚴重的效能問題:
(1)讀取查詢之前必須檢查是否命中快取
(2)查詢如果不在快取會被放入快取中,佔用系統消耗
#(3)當資料表新更新了數據,快取就會失效,帶來很大的系統損耗。
很明顯快取和快取失效都會帶啦很嚴重的系統消耗,在高並發下查詢快取可能會帶來系統效能下降以及僵死。所以建議使用memcache這種記憶體資料庫來實現資料的快取。
簡單說,就是對於相同SQL可以跳過SQL解析和執行計畫產生階段,直接回傳快取的結果。也就是快取完整的SELECT 查詢結果。
快取存放在一個哈希表中,透過一個哈希值引用。哈希值包括:查詢本身、目前查詢資料庫、客戶端協定等等。 但是要注意的是SQL語句的任何不同都會導致快取命中失敗(空格、註解、變數名稱不同)
但是查詢快取也有嚴重的效能問題:
(1)讀取查詢之前必須檢查是否命中緩存
(2)查詢如果不在緩存會被放入緩存中,佔用系統消耗
#(3)當數據表新更新了數據,緩存就會失效,帶來很大的系統損耗。
很明顯快取和快取失效都會帶啦很嚴重的系統消耗,在高並發下查詢快取可能會帶來系統效能下降以及僵死。所以建議使用memcache這種記憶體資料庫來實現資料的快取。
以上是高效能MySQL-查詢快取介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!