簡體   English   中英

SQLServer如何處理Alter Table命令?

[英]How the Alter Table command is handled by SQLServer?

我們使用SQL Server 2008中,我們有一個現有的數據庫,並要求它ADD了新的COLUMN到一個Table它只有2700行 ,但其列的一個類型是VARCHAR(8000) 當我嘗試使用ALTER table命令添加新列( CHAR(1) NULL )時,它花費了太多時間! 花了5分鍾 ,命令仍然在運行,我停止了命令。 下面是命令,我試圖添加新列:

ALTER TABLE myTable Add ColumnName CHAR(1) NULL
  1. 有人可以幫助我了解SQL Server如何處理ALTER Table命令嗎? 到底會發生什么?
  2. 為什么要花這么多時間來添加新列

編輯

  1. 表大小ALTER Command有什么影響?

更改表需要模式鎖。 許多其他操作也需要相同的鎖。 畢竟,在select語句的中間添加一列是沒有意義的。

因此,一個可能的解釋是一個進程將表鎖定了5分鍾。 然后, ALTER必須等到它自己獲得鎖為止。

您可以從SQL Server Management Studio中的“活動監視器”查看被阻止的進程以及被阻止的進程。

好吧,要記住的一件事是您正在向表中添加新的固定長度列。 在存儲中行的結構方式中,對於每行,所有固定長度的列都位於所有可變長度的列之前。 因此,必須對存儲中的每一行進行更新才能進行此更改。

如果這進而導致可以存儲在每個頁面上的行數發生更改,則可能需要大量新分配。

話雖如此,對於所示的行數,我將不必花5分鍾的時間-除非像Andomar指出的那樣,還涉及一些鎖爭用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM