2011-08-04 39 views
7

我正在基準測試一個Web應用程序,並且我的查詢出現了大約1%的問題,主要是UPDATES(但有時也是INSERT)。我對這些請求進行了分析,似乎這是查詢結束步驟花費了大量時間。「查詢結束」步驟在隨機時間非常長

starting 0.000029 
checking permissions 0.000005 
Opening tables 0.000017 
System lock 0.000005 
init 0.000032 
Updating 0.000052 
end 0.000030 
**query end 1.825892** 
closing tables 0.000025 
freeing items 0.000020 
logging slow query 0.000007 
logging slow query 0.000029 
cleaning up 0.000008 

當我通過文件去

末:這發生在年底,但ALTER TABLE的清理之前,CREATE VIEW,DELETE,INSERT,SELECT,或UPDATE語句。

查詢結束:此狀態發生在處理查詢之後但在釋放項目狀態之前。

那麼這是否意味着我的更新清理需要時間? 這一步究竟做了什麼,我該如何提高性能?

感謝

回答

11

問題通過在/etc/my.cnf中

當多個線程想要寫的文件在同一時間有一個聯鎖問題將

innodb_flush_log_at_trx_commit = 0 

解決,這樣日誌會每秒刷新一次。

+0

非常感謝,有同樣的問題。 – Frode

+6

設置innodb_flush_log_at_trx_commit = 0不是輕易採用的解決方案,它從根本上改變了事務的持久性! – 2012-12-11 16:12:50

+2

同意。天真地設置innodb_flush_log_at_trx_commit可能是危險的,答案是誤導。 –