Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавление нового диапазона секцианирования (ALTER PARTITION FUNCTION) / 7 сообщений из 7, страница 1 из 1
14.05.2021, 00:11
    #40070170
SergeyB.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление нового диапазона секцианирования (ALTER PARTITION FUNCTION)
Коллеги, добрый день. Подскажите пожалуйста, как поступить в вопросе.
Досталась в наследство база...
Есть уже секцианированная по id таблица (RANGE LEFT) на 8+ миллиардов записей на много терабайт. Сейчас у этой таблицы настроено секцианирование на 9 секций (0, 1ккк, 2ккк, ... , 8ккк)
На каждую секцию выделена своя файловая группа, сейчас приближаемся к 9 миллиардам, выделил новую файловую группу, но вот при ALTER PARTITION FUNCTION pf_id() SPLIT RANGE (9000000000) таблица блокируется на часы, откат длится примерно 4х времени.
Как правильно добавить новый диапазон с минимальным влиянием?
...
Рейтинг: 0 / 0
14.05.2021, 00:21
    #40070173
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление нового диапазона секцианирования (ALTER PARTITION FUNCTION)
Из того, что я вижу, хороших и быстрых вариантов у вас не осталось.
Секции сплитить надо заранее, пока они пустые.

Решение проблемы вертится вокруг того, чтобы убрать данные из последней секции в отдельную таблицу (через switch), сплитнуть секцию, потом данные вернуть.

Однако загвоздка как раз в последнем пункте -- или физический перелив (порциями, с минимальным протоколированием, если есть условия), или чек-констрейнт соответствующий надо навесить на ту -- отдельную -- таблицу (тоже не быстрая операция, но, хотя бы не приводит к модификации данных) с последующим обратным свитчем.
...
Рейтинг: 0 / 0
14.05.2021, 00:28
    #40070175
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление нового диапазона секцианирования (ALTER PARTITION FUNCTION)
UPD. Есть еще вариант не морочится с этой таблицей, создать новую с правильным секционированием, после 9ккк перестать писать в старую, но писать в новую, научить весь код с этой конструкцией работать и т.п. Может не полететь по ряду причин.
...
Рейтинг: 0 / 0
14.05.2021, 01:54
    #40070182
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление нового диапазона секцианирования (ALTER PARTITION FUNCTION)
SergeyB.,

если есть место, создайте новую таблицу с дополнительными секциями. В старой таблице добавьте триггер, который будет сохранять изменения в новую таблицу. Сделайте копию данных из старой таблицы. После окончания копирования переименуйте таблицы и назначьте требуемые права и внешние ключи. Удалите старую таблицу. Обратите внимание, нет ли "исторических" и других производящих данные триггеров на старой таблице и связанных с ней представлений.

Если Вы уверены, что старые данные не обновляются, то вместо копирования можно выполнить переключение секций.
...
Рейтинг: 0 / 0
14.05.2021, 09:50
    #40070215
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление нового диапазона секцианирования (ALTER PARTITION FUNCTION)
А пишется равномерно во все секции?
Или вы просто хотите преобразовать текущую секцию в архивную + рабочую?
...
Рейтинг: 0 / 0
14.05.2021, 10:50
    #40070229
SergeyB.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление нового диапазона секцианирования (ALTER PARTITION FUNCTION)
uaggster,

Пишется только в последнюю секцию, секцианирование по id, автоинкремент. Из старых секций данные только читаются, не модифицируются.
...
Рейтинг: 0 / 0
14.05.2021, 11:17
    #40070236
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление нового диапазона секцианирования (ALTER PARTITION FUNCTION)
SergeyB., тогда переключите секцию в рядомстояшую таблицу, сделайте сплит пустой секции, перелейте новые данные в новую секцию, удалив их в рядомстоящей таблице, а потом верните рядомстоящую таблицу на место старой секции.
Правда, нужно констрейнт будет создать, но, как я понимаю, это - быстро, т.к. по этому полу primary key построен.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавление нового диапазона секцианирования (ALTER PARTITION FUNCTION) / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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