2015-11-22 36 views
4

我在爲我的項目使用PHP和MySQL 5.6,我想測試並記錄哪些查詢被緩存,哪些不是。緩存的日誌查詢和那些不是的日誌查詢

我知道這樣一個事實,即如果相同的查詢一次又一次地發送到數據庫,它會從緩存中檢索結果,而不是從數據庫中讀取數據。現在,這就是我想檢查的原因,我想優化我的查詢。

現在我怎麼登錄呢?有什麼辦法嗎?

在此先感謝。

回答

2

假設你最關心哪些查詢沒有被緩存,哪些是真正放慢速度的問題。您可能想要使用MySQL慢速查詢日誌來發現它們並使用EXPLAIN分別優化每一個。

https://dev.mysql.com/doc/refman/5.6/en/slow-query-log.html

然而這樣的回答是「這是不是你要找的機器人」絕招:它不直接但回答你的問題,但讓你在正確的軌道上。據我所知,與大多數緩存層一樣,MySQL查詢緩存通過基於散列的密鑰存儲結果,使得直接查詢 - 散列關聯相當痛苦:How to list cached queries in MySQL? (Qcache_queries_in_cache)

+1

感謝您的答案和鏈接。所謂鏈接簡稱指出緩存的查詢的數量,但不能查詢本身.. 其實我並不擔心慢查詢日誌導致它有存儲服用上述閾值EXEC時間查詢。我只是擔心查詢,以便我可以優化未緩存查詢和改變他們,使他們有足夠快的高速緩存。 –

+0

也可以實際利用慢查詢日誌中記錄每一個查詢處理,使您可以瀏覽所有這些作爲一個整體,並確定哪些是相似,足以進行更新,以充分利用緩存。我就是這麼想的。 – Calimero