2
我想從表中刪除外鍵約束,這需要很長時間,我不知道在生產環境中執行此操作時會發生什麼樣的壞事。MySQL:在InnoDB表上刪除外鍵約束
ALTER TABLE table DROP FOREIGN KEY fk_my_foreign_key;
- 爲何需要那麼久嗎?
- 我可以加快速度嗎?
- 是否安全地中斷中間的過程?
- 在生產服務器上運行這樣的操作是否有任何副作用?
- 當alter table失敗(丟失與服務器的連接)時是否存在任何一致性問題?在這種情況下,如果無法使用其他配置(最大數據包大小)重新啓動服務器,該怎麼辦?根據要求
的更多信息:
- MySQL服務器版本:34年5月5日
- 外鍵引用在同一個表
- 表中列有行的8000萬左右
- 關鍵+表上的約束,ON UPDATE CASCADE ON DELETE CASCADE
在大多數情況下,ALTER TABLE通過創建 原始表的臨時副本來工作。對副本執行更改,然後刪除原始表,並重新命名新表。當ALTER TABLE正在執行時,原始表可由其他會話讀取。 對錶進行更新和寫入操作會停止,直到新表準備好 ,然後自動重定向到新表,而不會有 任何失敗的更新。謝謝。
其他情況呢?我可以防止這種鎖嗎?
您需要添加更多關於您的環境的數據。首先服務器版本,那麼你的表格是多少,它們有多大。 –
編輯,謝謝 – Aki
確實更新/刪除級聯 – Aki