powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удаление из кучи в виде связного списка
4 сообщений из 4, страница 1 из 1
Удаление из кучи в виде связного списка
    #39924369
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Случался недавно инцидент - начало пропадать место на диске. Оказалось, что проблема в пользовательской таблице-куче, которая должна была очищаться при помощи Delete tbl WITH (TABLOCK). Однако, эта конструкция не освобождает страницы. При ближайшем рассмотрении, оказалось, что это не просто куча, а куча в виде связного списка. Такие кучи упоминаются в http://www.queryprocessor.ru/heap-table-vs-fragmentation/ с комментарием, что такими могут быть системные таблицы.

Однако, это не системная таблица, но legacy, по всей видимости со времён SQL2005. Сейчас же (SQL2017) мне не удалось создать кучу в виде связного списка, создается чисто IAM. Связная куча очищается только при помощи более грубой силы вроде ALTER TABLE.

Кто-нибудь знает - был ли такой кунстштюк на более ранних версиях? Достаточно ли будет пересоздать таблицы?
...
Рейтинг: 0 / 0
Удаление из кучи в виде связного списка
    #39924374
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

https://www.sqlskills.com/blogs/paul/when-heap-data-pages-become-linked/

Для избавления от списка достаточно будет
Код: sql
1.
alter table ... rebuild with (online = on);
...
Рейтинг: 0 / 0
Удаление из кучи в виде связного списка
    #39924452
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Связи были удалены, однако после delete (tablock)/insert (tablock) снова появились на новых страницах. И нет уверенности - почему не освобождаются страницы. Может по другой причине?

После truncate таблица также заполняется в ссылочной манере.

PS после проведения экспериментов выяснил, что "виновником" появления связанных страниц является INSERT ... WITH (TABLOCK) SELECT ... .
...
Рейтинг: 0 / 0
Удаление из кучи в виде связного списка
    #39924558
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Проблема с delete воспроизводится только на унаследованных БД и от связанности страниц не зависит.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удаление из кучи в виде связного списка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]