Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 удаление 50% записей дало всего ~20% уменьшения data size  [new]
juwdoks
Member

Откуда:
Сообщений: 144
На момент чистки: 9890520 rows, 1 418,023 MB data, 1 833,922 MB index
После чистки: 4912009 rows, 1 180,164 MB data, 1 542,336 MB index

Для таблицы есть 6 NONCLUSTERED индексов из которых один Unique. Удаление+создание каждого дало еще 600 Мб места.

Сейчас так: 4912009 rows, 1 138,672 MB data, 926,289 MB index

Вопрос такой: почему место под данные так слабо изменилось? Ведь удалено почти 50% записей... Все записи почти одинаковые по составу. Я ожидал что место под данные уменьшится пропорционально уменьшению количества записей.

В чем может быть причина ошибки или так и должно быть? Куда копать?
7 ноя 09, 21:26    [7897172]     Ответить | Цитировать Сообщить модератору
 Re: удаление 50% записей дало всего ~20% уменьшения data size  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Потому что удаление лишь породило дыры в страницах таблицы и в страницах индексов.
Кластерного ведь индекса, нет, верно?

Чтобы освободить неиспользуемое пространство,
1) перестройте все некластерные индексы с необходимым филлфактором;
2) создайте кластерный индекс по таблице, и если он не нужен, то сразу после создания удалите его;
7 ноя 09, 21:39    [7897194]     Ответить | Цитировать Сообщить модератору
 Re: удаление 50% записей дало всего ~20% уменьшения data size  [new]
iljy
Member

Откуда:
Сообщений: 8711
juwdoks,
да ни в чем скорее всего. Индекс - это дерево, соответственно у него несколько уровней, и место,им занимаемое, зависит от количества записей нелинейно. Плюс - страницы индексов не полностью заполняются. Что sys.dm_db_index_physical_stats говорит про ваши индексы?
7 ноя 09, 21:44    [7897208]     Ответить | Цитировать Сообщить модератору
 Re: удаление 50% записей дало всего ~20% уменьшения data size  [new]
iljy
Member

Откуда:
Сообщений: 8711
juwdoks,

и да, если нет кластерного, а его похоже нет - страницы таблицы стали дырявыми, но не освободились.
7 ноя 09, 21:53    [7897220]     Ответить | Цитировать Сообщить модератору
 Re: удаление 50% записей дало всего ~20% уменьшения data size  [new]
juwdoks
Member

Откуда:
Сообщений: 144
Александр,
iljy,

Огромное спасибо. Именно так и прошлый раз и делал, но забыл что именно кластерный индекс решает вопрос правильной организации данных.

Теперь 4912009 rows, 676,258 MB data, 1 081,141 MB index
7 ноя 09, 22:35    [7897304]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить