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

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

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

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

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

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


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