MySQL 死鎖 - 新增列

MySQL 死鎖 - 新增列

前幾天我遇到了一個討厭的 MySQL 問題。我使用 PHPMyAdmin 介面為表格「促銷」新增了兩個新列(13 個現有列,約 750 筆記錄)。此查詢(“ALTER TABLE.....”)從未完全執行並鎖定表,因此對“Promotions”的每個後續查詢都會掛起並排隊。我花了大約一個小時才意識到發生了這種情況,並且透過重新啟動資料庫解決了問題。

是否存在需要採取的標準預防措施以及因更改資料庫模式而出現的已知問題?我以前從未見過這種鎖定發生。

答案1

考慮以下場景以更順利地更改 mysql 表,尤其是在生產環境中:

1. CREATE tmp_table LIKE original_table
2. ALTER tmp_table..
3. INSERT INTO tmp_table SELECT * FROM original_table
4. RENAME original_table to orginal_table_old
5. RENAME tmp_table to original_table
6. DROP original_table_old

您可能還感興趣沖洗台解鎖桌子關於文檔。

編輯: 有替代解決方案可以解決這個問題,例如pt-線上架構更改Percona 的工具。

相關內容