Sql-Server
將列添加到生產表
在 SQL Server 2008 R2 上向大型生產表添加列的最佳方法是什麼?根據微軟的線上書籍:
ALTER TABLE 中指定的更改會立即實施。如果更改需要修改表中的行,則 ALTER TABLE 會更新這些行。ALTER TABLE 在表上獲取模式修改鎖,以確保在更改期間沒有其他連接甚至引用表的元數據,除了最後需要非常短的 SCH-M 鎖的線上索引操作。
(http://msdn.microsoft.com/en-us/library/ms190273.aspx)
在具有數百萬行的大表上,這可能需要一段時間。停電是唯一的選擇嗎?處理這種情況的最佳方法是什麼?
“這取決於”
如果您添加不需要向行添加數據的列,那麼它可能會非常快。
例如,添加 int 或 char 需要物理行移動。不應該添加一個沒有預設值的可為空的 varchar(除非 NULL 點陣圖需要擴展)
您需要在恢復的生產副本上試用它以獲得估算值
如果您必須在十億行表上重新添加索引和鍵,則創建新表、複製、重命名可能需要更長的時間。
我已經更改了十億行表,這些表需要幾秒鐘才能添加一個可為空的列。
我說要先備份嗎?