我們最近升級了mysql服務器版本5.5.8上運行的mysql數據庫。升級後,有時我們會看到簡單的升級步驟需要10秒以上。當我查看過程列表時,它顯示它們都處於「查詢結束」狀態。有沒有任何機構對此有任何想法。UPDATE語句處於「查詢結束狀態」
UPDATE Accounts SET IPadd = 'xx.xx.xx.xx', updatedtime = NULL WHERE Id=xx;
我們最近升級了mysql服務器版本5.5.8上運行的mysql數據庫。升級後,有時我們會看到簡單的升級步驟需要10秒以上。當我查看過程列表時,它顯示它們都處於「查詢結束」狀態。有沒有任何機構對此有任何想法。UPDATE語句處於「查詢結束狀態」
UPDATE Accounts SET IPadd = 'xx.xx.xx.xx', updatedtime = NULL WHERE Id=xx;
嘗試將引號添加到查詢中使用的任何值,因爲它們都是字符串。這幫了我很多次。例如:
UPDATE Accounts SET IPadd = 'xx.xx.xx.xx' WHERE Id='xx';
我在這裏檢查了一些解決方案,然後我來到這個link。
加入這一行(如果存在的話編輯):在/etc/my.cnf中
佩德羅·韋爾內克評論
innodb_flush_log_at_trx_commit = 0
:
設置innodb_flush_log_at_trx_commit天真可以噹噹erous
如果您正在對它進行事務性查詢,那麼這是您的選擇。
建議:
1)檢查你的日誌文件的大小
LINK:Lots of "Query End" states in MySQL, all connections used in a matter of minutes
2)確保 「ID」 有一個索引
3)看各種的MySql調諧和配置選項。例如:innodb_flush_log_at_trx_commit = 0
LINK:"query end" step very long at random times
警告:小心禁用日誌沖洗之前考慮的問題。在這裏尋找更多詳情:
LINK:https://dba.stackexchange.com/questions/12611/is-it-safe-to-use-innodb-flush-log-at-trx-commit-2
感謝您的迴應。正如你所提到的,我沒有檢查日誌文件,我們有足夠的空間可用,這些文件不是太大。 ID是該表中的主鍵,所以我認爲我們不需要索引。我正在嘗試第三個。 – Chandu 2013-03-01 02:38:08
日誌文件是一個明確的候選人。但我會考慮先清除日誌。禁用flush_log可能會產生不利後果。而且OP甚至沒有說他是否在使用innodb。看到我上面的鏈接。恕我直言... – paulsm4 2013-03-01 00:30:28
我不同意清除日誌文件,我寧願將它移動到其他目錄。但是,在他的問題。我們無法確定他使用了哪個表引擎。我已經到了這個答案,也許他正在使用InnoDb。 – 2013-03-01 00:36:04
是的,它是Innodb – Chandu 2013-03-01 02:40:56