SQL Server: двойной размер данных таблицы при изменении типа столбца - PullRequest
1 голос
/ 09 июня 2011

Я изменил тип столбца на фактический меньший тип:

-- change type from nvarchar(100) to varchar(50)
Alter Table [MyTable] Alter column [MyColumn] varchar(50) 

Таблица содержит 4 млн. записей. Прежде чем использовать около 1,1 ГБ пространства, после изменения столбца, он использует 2,2 ГБ пространства. Есть ли какое-то объяснение этому?

Я нахожу пространство, которое оно использует либо SMO, либо просматривая свойства таблицы в студии управления сервером sql: «MyTable -> Properties -> Storage -> Space data». Теперь я сомневаюсь, что это фактическое пространство, используемое данными.

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Запустите ALTER INDEX ALL On MyTable REBUILD, а затем снова проверьте пространство с флагом «true»

По сути, изменение типа имеет фрагментированное хранилище: например, теперь оно NULLable и ранее не было, что влияет наструктуры на диске.Я выбрал этот пример, потому что вы не указали NULL / NOT NULL в ALTER TABLE

0 голосов
/ 09 июня 2011

С помощью sp_spaceused вы можете получить больше информации о пространстве, используемом вашей таблицей.

EXEC sp_spaceused @objname = N'dbo.MyTable' ,@updateusage = N'TRUE';
...