Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 December 14

VB

Vitaliy Bajenov in SqlCom.ru - Стиль жизни SQL
и не одна таблица, по которой идет такое секционирование
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
Vitaliy Bajenov
данные всегда разделенные. года 4 назад создал функцию по датам, и кончается 2020 годом, теперь надо добавлять еще, придется изгаляться как то
Если таблица уже секционированная, то надобавлять пустых секций впереди ничего не стоит. Это операция над метаданными, раз нет реальных данных, удовлетворяющих критериям секционирования. Почитайте про Sliding window. Можно каждый месяц создавать секцию на следующий месяц и бед не знать.
источник

AD

AlexXx D in SqlCom.ru - Стиль жизни SQL
вот такой вариант  есть таблица  tbla в которой 20 год не разделен. перемещаем 20 год через свич в tblb переименовываем tbla в tblc. поднимаем view tbla c instead of триггерами ну и далее из tblb мержим в tblc.  Но это теория. потом вьюху убираем и tblc переименовываем обратно в tbla
источник

AD

AlexXx D in SqlCom.ru - Стиль жизни SQL
Oleg T
Если таблица уже секционированная, то надобавлять пустых секций впереди ничего не стоит. Это операция над метаданными, раз нет реальных данных, удовлетворяющих критериям секционирования. Почитайте про Sliding window. Можно каждый месяц создавать секцию на следующий месяц и бед не знать.
я так понимаю речь в том что там секциибыли по месяцам если нет то да просто добавить 21 год 22 год и тд
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
AlexXx D
вот такой вариант  есть таблица  tbla в которой 20 год не разделен. перемещаем 20 год через свич в tblb переименовываем tbla в tblc. поднимаем view tbla c instead of триггерами ну и далее из tblb мержим в tblc.  Но это теория. потом вьюху убираем и tblc переименовываем обратно в tbla
чет мне кажется у них места под логи не хватит, а мерджить придётся какой-то хитрожопой логикой, иначе эскалация всё положит
источник

AD

AlexXx D in SqlCom.ru - Стиль жизни SQL
Oleg T
чет мне кажется у них места под логи не хватит, а мерджить придётся какой-то хитрожопой логикой, иначе эскалация всё положит
там же индекс есть по индексу
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
AlexXx D
там же индекс есть по индексу
Эскалация на 5000 так и так произойдет. мердж же в транзакции, для него те же правила.
источник

AD

AlexXx D in SqlCom.ru - Стиль жизни SQL
вопрос только в том, уникальный индекс, если нет то там да сложно будет, если уникальный то просто пачками перекидывать, если есть боязнь что лог вырастет, или я неправильно понял?
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
AlexXx D
вопрос только в том, уникальный индекс, если нет то там да сложно будет, если уникальный то просто пачками перекидывать, если есть боязнь что лог вырастет, или я неправильно понял?
да, верно, просто я думал мы про классический оператор Merge говорим. Если можно работать пачками, то конечно по чуть чуть сгрызть можно, без сомнения.
источник

VB

Vitaliy Bajenov in SqlCom.ru - Стиль жизни SQL
AlexXx D
я так понимаю речь в том что там секциибыли по месяцам если нет то да просто добавить 21 год 22 год и тд
так и есть секции по месяцам, получается что можно в схему партиционирования добавить еще партиции месячные на будущее, и это не повлечет за собой каких действий с данными
а вот что касается функции, я так и не понял как их добавлять как понял из примера командой
пример:
Alter Partition Function OrderPartitionFunction() SPLIT RANGE ('20180201');
Go

данный пример просто добавит еще один период в конец функции, при этом ничего с данными происходить не будет, т.к. их просто нет за данный период ?
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
Vitaliy Bajenov
так и есть секции по месяцам, получается что можно в схему партиционирования добавить еще партиции месячные на будущее, и это не повлечет за собой каких действий с данными
а вот что касается функции, я так и не понял как их добавлять как понял из примера командой
пример:
Alter Partition Function OrderPartitionFunction() SPLIT RANGE ('20180201');
Go

данный пример просто добавит еще один период в конец функции, при этом ничего с данными происходить не будет, т.к. их просто нет за данный период ?
да, так и есть
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
Vitaliy Bajenov
так и есть секции по месяцам, получается что можно в схему партиционирования добавить еще партиции месячные на будущее, и это не повлечет за собой каких действий с данными
а вот что касается функции, я так и не понял как их добавлять как понял из примера командой
пример:
Alter Partition Function OrderPartitionFunction() SPLIT RANGE ('20180201');
Go

данный пример просто добавит еще один период в конец функции, при этом ничего с данными происходить не будет, т.к. их просто нет за данный период ?
Если там еще по файловым группам побито, то надо указать какая файловая группа следующая.
источник

AD

AlexXx D in SqlCom.ru - Стиль жизни SQL
в общем, проблема при сплите в том что если при разделении, в отделяемой партиции будут данные то начнется их фактическое перемещение. если данных нет или немного, то это пройдет быстро и незаметно, а если много то это проблема.
источник

VB

Vitaliy Bajenov in SqlCom.ru - Стиль жизни SQL
спасибо большое, буду экспериментировать
просто у меня сомнение было, т.к. конструктор в smss не дает делать alter над функцией, только DROP+CREATe
источник

VB

Vitaliy Bajenov in SqlCom.ru - Стиль жизни SQL
AlexXx D
в общем, проблема при сплите в том что если при разделении, в отделяемой партиции будут данные то начнется их фактическое перемещение. если данных нет или немного, то это пройдет быстро и незаметно, а если много то это проблема.
хорошие новости перед Новым годом )))
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
AlexXx D
в общем, проблема при сплите в том что если при разделении, в отделяемой партиции будут данные то начнется их фактическое перемещение. если данных нет или немного, то это пройдет быстро и незаметно, а если много то это проблема.
Добавлю еще, что длиться это будет почему значительно дольше, чем просто копирование данных.  там какая-то внутренняя магия ресурсозатратная идёт
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
Vitaliy Bajenov
спасибо большое, буду экспериментировать
просто у меня сомнение было, т.к. конструктор в smss не дает делать alter над функцией, только DROP+CREATe
Ой, да, забыл сказать!!! Очень важно! не делайте ничего с секционированием через SSMS! мастер задаёт неверный порядок операций с индексами, получается что данные будут перекладываться несколько раз.
источник

VB

Vitaliy Bajenov in SqlCom.ru - Стиль жизни SQL
Oleg T
Ой, да, забыл сказать!!! Очень важно! не делайте ничего с секционированием через SSMS! мастер задаёт неверный порядок операций с индексами, получается что данные будут перекладываться несколько раз.
:)
источник

LP

Lt Project in SqlCom.ru - Стиль жизни SQL
Доброго вечера
источник

LP

Lt Project in SqlCom.ru - Стиль жизни SQL
подруге нужна помощь по SQL завтра на экзамене - кто согласен помочь за денежку?
источник