2011-07-06 101 views
2

在我們的主MySQL服務器上,花了40分鐘時間插入行並在特定的表上重新啓用密鑰。在從站上,ALTER TABLE ... ENABLE KEYS命令現在已經運行了超過100分鐘,這非常不尋常。我想殺死它,但那會激怒奴隸。有什麼方法可以看到這需要多長時間?我可以告訴ALTER TABLE命令有多長時間嗎?

+0

兩臺機器都是相同的規格嗎?在相同的負載下?表中有多少行? – Raoul

+0

大約1600萬行和十幾個索引,現在奴隸承受的負荷要高得多(7比9),我懷疑是因爲這個原因。它幾乎沒有別的。我不知道規範,但我知道這花費100多分鐘是非常不尋常的。 – Andrew

+0

如果您不知道機器規格,如何判斷100+分鐘是否異常?對於你所知道的,它擁有主服務器處理能力/內存的四分之一。除重命名錶之外,更改表命令IIRC會創建新表的副本,並將所有數據加載到該表中。調整和存儲引擎選擇也會影響這需要花費的時間。 – Raoul

回答

2

無法確定需要多長時間。該命令會將所有數據複製到臨時表中,進行更改,然後重命名副本以替換原始數據。您可能會在ProcessList中看到「複製到臨時表」,但這並不能說明剩下多少。

我也建議你不要殺死進程並讓它完成操作。

耐心等待!

+0

出於好奇,如果我殺了這個過程會有多糟? :)(我現在不需要這張表,所以我不關心它;我只關心奴隸與主人同步) – Andrew

+0

從理論上講,它不應該那麼糟糕,因爲工作是無論如何在臨時桌上完成,直到它實際完成,原始未觸及。完成你在這種情況下開始的任務只是我個人的偏好。 – ChrisBint

相關問題