Секционирование таблиц SQL Server, что происходит за кулисами? - PullRequest
1 голос
/ 19 января 2011

Я работаю с разбиением таблицы на очень большую таблицу фактов на складе.Я выполнил сценарий несколькими разными способами.С и без некластеризованных индексов.С индексами, по-видимому, резко расширяется файл журнала, в то время как без некластеризованных индексов он, по-видимому, не раскрывает файл журнала слишком сильно, но требует больше времени для запуска из-за перестройки индексов.for - это любые ссылки или информация о том, что происходит за сценой, в частности, с файлом журнала, когда вы разбиваете раздел таблицы.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2011

Если функция секционирования используется секционированной таблицей и SPLIT приводит к секциям, в которых оба будут содержать данные, SQL Server переместит данные в новый раздел.Это движение данных приведет к росту журнала транзакций из-за вставок и удалений.

Это из статьи Microsoft по Стратегия секционированной таблицы и индекса

Так выглядиткак это делает удаление из старого раздела и и вставить в новый раздел.Это может объяснить рост t-log.

0 голосов
/ 19 января 2011

Я думаю, нетрудно теоретизировать, что происходит (в определенной степени).За кулисами каждому разделу присваивается другой HoBT, что на обычном языке означает, что каждый раздел фактически сидит на своей собственной скрытой таблице.

Таким образом, теоретизирование разделения раздела (предполагая, что данные перемещаются) будет включать:

  • вставка данных в новую таблицу
  • удаление данных из старой таблицы

Индекс NC можно вычислить, но в зависимости от того, есть лиявляется кластеризованным индексом или нет, теоретизирование изменится.Также имеет значение, является ли индекс выровненным по разделам или нет.

Учитывая немного больше информации о таблице (CL или Heap), мы могли бы теоретизировать это далее

...