2012-09-25 28 views
1

本手冊指示「SQL_NO_CACHE」阻止將查詢從添加到緩存中的。但它沒有提到使用緩存的任何信息,我可以看到。「SQL_NO_CACHE」指令是否阻止查詢使用緩存,或僅僅添加緩存?

我試圖對一個查詢的兩個版本進行基準測試,但他們已經在沒有「SQL_NO_CACHE」的情況下運行。所以我不知道我的測試是否使用查詢緩存。

「SQL_NO_CACHE」指令是否阻止查詢使用緩存,或只是添加到緩存?

回答

2

MySQL查詢緩存基於查詢的完整文本文本進行索引,因此功能上沒有區別:即使該指令被忽略,具有SQL_NO_CACHE的查詢結果也會存儲在不同的緩存中「插槽「從查詢沒有SQL_NO_CACHE。 (事實上​​,簡單地在查詢的某個地方添加一個空格,或者將「SELECT」改爲「select」 - 也可以「查殺」查詢緩存,使其再次運行.MySQL查詢緩存並不是特別複雜。 )

話雖這麼說,快速測試通過運行帶有SQL_NO_CACHE查詢,看QCACHE_QUERIES_IN_CACHE狀態確認SQL_NO_CACHE並防止變量被存儲在緩存中,並看看the source使它看上去彷彿的SQL_NO_CACHE存在也會讓MySQL無法檢查緩存中的結果。