2010-09-19 13 views
2

如果同一個sql從不同的會話中運行很多次,mysql會多次解析相同的sql嗎?在oracle/sql服務器中,sql的計劃被緩存並且可以被重用。由於它被告知解析和創建sql計劃的代價很高,如果mysql沒有緩存它們,那麼解析它會花費很多時間會是一個問題嗎?mysql是否有關於sql計劃的緩存?

回答

1

對於執行計劃緩存︰我不相信MySQL目前提供此功能。

的MySQL確實有一個查詢緩存:SELECT語句的http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

查詢緩存存儲的文本與被髮送到客戶端的相應結果一起。如果稍後收到相同的語句,服務器將從查詢緩存中檢索結果,而不是再次解析並執行該語句。查詢緩存在會話中共享,因此可以發送由一個客戶端生成的結果集,以響應另一個客戶端發出的相同查詢。

我不知道如何最新的這篇文章(2006年),但它談論具體這些問題: http://www.mysqlperformanceblog.com/2006/07/27/mysql-query-cache/
據我所知,沒有多少從那以後改變了這看待。

+0

請注意,在寫入任何引用表時,緩存查詢將從緩存中刪除。 – Piskvor 2010-09-19 07:36:33

1

這是一個現有的MySQL Feature Request

但是,最後的評論(2009年),如果不明確的話,它會提供顯着的性能改進,並且可能導致死鎖狀況。

相關問題