[英]MySQL query caching working
我想了解MySQL查詢緩存的工作方式。 我已經檢查過這個API
這些方案將如何工作?
情況1
select * from my_table where column = 'Myvalue';
情況二
select * from my_table where column = 'test';
情況3
select * from my_table where column = 'Myvalue';
因此,當執行情況3時,我想知道結果是從緩存中獲取還是從數據庫中獲取。 有人可以解釋嗎? 因為他們在手冊中提到了這一點
查詢必須完全相同(逐字節),才能被視為相同。
由於查詢1和3相同,因此只要第一個查詢的結果仍在查詢緩存中,並且查詢之間的表沒有更新,則第三個查詢將由緩存提供服務,而不是命中該表。
默認情況下,查詢緩存處於關閉狀態。 將query_cache_size
設置為字節大小以啟用查詢緩存。 以1024字節的倍數設置。 該文件說:
通常,數十兆字節的大小是有益的。
另請注意以下有關查詢緩存操作的信息 :
在MySQL 5.1.17之前,准備好的語句不使用查詢緩存。 從5.1.17開始,已准備好的語句在某些條件下使用查詢緩存,具體情況取決於准備方法。
如果表發生更改,則所有使用該表的緩存查詢都將變為無效,並從緩存中刪除。
請注意,根據查詢緩存,以下兩個查詢雖然返回相同的結果集,但它們並不相同:
select * from my_table where column = 'Myvalue';
SELECT * FROM my_table WHERE column = 'Myvalue';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.