Может кто-нибудь объяснить какое-то поведение, которое я наблюдаю в SQL Server 2005?
Мне было поручено уменьшить размер или нашу БД.
Таблица содержит почти 6 миллионов записей,и я рассчитал размер строки как 1990 байт.Я взял копию таблицы и уменьшил размер строки до 803 байт с помощью различных методов.
Когда я сравниваю Размер данных исходной таблицы (свойства правой кнопки мыши или sp_spaceused) с новой таблицей I 'Я вижу экономию всего 21,7 МБ.Это далеко не то, что я ожидал.
Вот как я рассчитал размер строки: если столбец был числовым / десятичным, то я использовал размер MSDN (http://msdn.microsoft.com/en-us/library/ms187746.aspx), для всего остального, что я использовал syscolumns.lengthЕсли столбец обнулялся, я добавил дополнительный байт.
Вот некоторые из внесенных мною изменений.
- Превратил ненужные nvarchars в varchars
- Сделал столбцы НЕNULL
- Уменьшена максимальная длина столбцов varchar для соответствия фактическим данным
- Удалены некоторые неиспользуемые столбцы
- Пары datetime в smalldatetime
- Превратили несколько десятичных знаков в целые.
- Слияние 16 пустых столбцов BIT в немного замаскированный int.
Исходя из этого, мои расчеты показали уменьшение размера строки на 60%, а по сравнению с таблицей строк 6M я ожидал бы больше, чемЭкономия 21 МБ. Она уменьшилась с 2 762 536 КБ до 2 740 816 КБ.
Может кто-нибудь объяснить мне это поведение?
ps Это не учитывает никаких индексов.