Mysql

我可以告訴 MySQL 記憶體什麼嗎?

  • March 20, 2015

很簡單的問題:

假設我有一個我知道經常使用的特定查詢,我可以告訴 MySQL 始終“自動”記憶體它嗎……即,一旦記憶體的查詢結果被刷新,mysqld立即再次執行該查詢以使記憶體的數據準備好下一個使用者?

或者反過來:我可以告訴 MySQL 不要記憶體特定的查詢嗎?其他記憶體選項呢,不一定與查詢相關?

我在網上搜尋了這個,但找不到任何相關的東西。

MySQL 文件有SQL_NO_CACHE選項:

可以在 SELECT 語句中指定兩個與查詢記憶體相關的選項:

SQL_CACHE

如果查詢結果可記憶體且 query_cache_type 系統變數的值為 ON 或 DEMAND,則查詢結果將被記憶體。

SQL_NO_CACHE

伺服器不使用查詢記憶體。它既不檢查查詢記憶體以查看結果是否已記憶體,也不記憶體查詢結果。(由於解析器的限制,空格字元必須在 SQL_NO_CACHE 關鍵字之前和之後;非空格字元(例如換行符)會導致伺服器檢查查詢記憶體以查看結果是否已記憶體。)

例子:

SELECT SQL_CACHE id, name FROM customer;
SELECT SQL_NO_CACHE id, name FROM customer;

您可以通過設置 query_cache_type 將 SQL_NO_CACHE 設置為會話的預設

SET query_cache_type = 'DEMAND';

要麼

SET query_cache_type = 2;

之後,你必須說SELECT SQL_CACHE讓它記憶體SELECT

引用自:https://dba.stackexchange.com/questions/95838