
假設記憶體足夠,
MySQL如何判斷是從快取中取得還是重新查詢?
答案1
AFAIK mysql 當表格更改(插入、更新、刪除等)時,它的快取會自動過期
mysql通常會根據query_cache_limit和大小立即快取它,預設的query_cache_limit是1M,所以如果單一查詢變得更大,那麼它不會緩存,除非你改變它。
您必須確保您的查詢也相等,因為它考慮了區分大小寫的查詢。
除此之外,您可以使用以下命令來監視它:
SHOW STATUS LIKE '%qcache%';
例如,建立一個包含一些條目的表並運行:
SELECT id,name FROM my_table WHERE id > '2'; SHOW STATUS LIKE '%qcache%';
你會注意到快取的查詢數量增加了 1,現在再次執行相同的選擇,你會看到 mysql 已經在使用快取了,結果會發生得更快。
附加資訊
首先,您必須確保您有query-cache-type = 1
my.cnf 或 my.ini,具體取決於作業系統/安裝。
從 mysql 中,您可以執行以下命令來驗證其狀態:
SHOW VARIABLES LIKE '%query_cache%';
列出資料時,您將看到查詢快取大小,如果設定為 0,則表示您的查詢快取已停用,該變數確定用於查詢快取的記憶體(以位元組為單位)。
正如您對查詢快取類型所做的那樣,將以下內容新增至您的 my.cnf 或 my.ini :
query-cache-size = 40M