在不鎖定表的情況下更改TABLE
在MySQL 中執行ALTER TABLE 操作時,表在持續時間內處於鎖定狀態語句,可能會阻塞並發寫入。如果對大型表執行此操作,INSERT 或 UPDATE 語句可能會長時間中斷。有沒有一種解決方案可以在不影響正在進行的更新的情況下執行「熱變更」?
唯一的選擇:手動操作
雖然 MySQL 缺乏對熱變更的直接支持,但存在替代方案:手動複製許多 RDBMS 系統自動執行的功能。這涉及:
技術注意事項:
新增欄位會有效地修改表中的每一行。此過程需要對磁碟上的資料進行物理重組,類似於影響更大的大量 UPDATE 操作。字段級鎖定比行級鎖定更複雜,並且表範圍的鎖定並不總是可取的。
其他 RDBMS 解決方案:
雖然 MySQL 可能不會原生支援熱更改,其他 RDBMS 系統可能提供此類功能。例如,PostgreSQL 允許分區表,可以單獨更改分區表而不會影響其他分區。
以上是如何在不鎖定表和不中斷並發更新的情況下執行 MySQL'ALTER TABLE”操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!