2011-02-12 53 views
1

這是我在管理員職業生涯中遇到的最令人困惑的MySQL問題。 MySQL mastery有誰能幫我一下嗎?:一個令人費解的MySQL問題:查詢速度很慢

現在,我運行一個應用程序,每秒鐘查詢我的MySQL/InnoDB表。這些查詢非常簡單並且經過優化 - 無論是單行插入還是使用索引進行選擇。

通常,查詢速度非常快,在10 ms以下運行。但是,每隔一小時左右,所有查詢都會減慢。例如,今天5點04分39秒,一系列簡單查詢全部運行超過1-3秒,如我的慢查詢日誌所示。

爲什麼會出現這種情況,您認爲解決方案是什麼?

我有我自己的一些想法:也許硬盤在那段時間很忙?我運行雲服務器(rackspace)但我有flush_log_at_trx_commit設置爲0和大量的緩衝區內存(磁盤表大小的10倍)。所以插入和選擇應該從內存中完成嗎?

有沒有其他人遇到過這樣的事情?我搜遍了這個論壇和其他人,而且看起來好像沒有其他的MySQL問題。

+2

您應該在http://serverfault.com/上提問。你在同一個盒子上有其他網站嗎?任何cron作業正在運行?你有足夠的物理內存來防止交換? – 2011-02-12 03:40:34

回答

1

突然失速有很多原因。例如 - 即使您使用flush_log_at_trx_commit = 0,InnoDB也會暫時暫停,因爲它會擴展數據文件的大小。

我對Rackspace上較小實例類型的體驗是IO完全糟糕。我已經看到隨機寫入(應該需要10毫秒)需要500毫秒。

內置MySQL中沒有任何內容可以幫助您更輕鬆地識別問題。你可能想要做的是看看Percona Server的緩慢的查詢日誌增強。有一個稱爲「profiling_server」的特定功能可以分解時間: http://www.percona.com/docs/wiki/percona-server:features:slow_extended#changes_to_the_log_format