2010-11-15 53 views
8

像'Qcache_queries_in_cache的回報顯示狀態:如何在MySQL中列出緩存的查詢? (Qcache_queries_in_cache)

+-------------------------+----------+ 
| Variable_name   | Value | 
+-------------------------+----------+ 
| Qcache_queries_in_cache | 327  | 
+-------------------------+----------+ 

如何打印這些327個查詢?

爲了優化mysql緩存,我想嘗試切換到「按需」緩存。但在我之前,我想確定哪些查詢被緩存或丟棄。我試過mysql文檔,谷歌和stackoverflow搜索,但沒有運氣。

回答

8

AFAIK sql查詢不存儲到Qcache只有他們的散列。因此,無法找到現在緩存的查詢,因此無需執行查詢之一併查看Value列的更改。

+0

thx ...我在生產服務器上執行許多查詢和發現更改不起作用。我希望有某種調試模式。 – user508627 2010-11-16 00:06:35

+0

有沒有辦法去那些哈希? – simbabque 2014-04-08 08:52:43

2

如果您通過檢查查詢您的query_id顯示個人資料啓用特定會話變量分析現在

SET SESSION PROFILING=on; 
show profiles; 

;

mysql> show profile for query 2; 

+--------------------------------+----------+ 
| Status       | Duration | 
+--------------------------------+----------+ 
| starting      | 0.000017 | 
| checking query cache for query | 0.000005 | 
| checking privileges on cached | 0.000003 | 
| sending cached result to clien | 0.000005 | 
| logging slow query    | 0.000002 | 
| cleaning up     | 0.000001 | 
+--------------------------------+----------+ 

通過檢查狀態列可以看到是否查詢緩存。

但是,這只是一個特定的會話,您可以爲每個會話啓用分析。