|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
Посоветуйте лучший вариант. Есть большая таблица которую можно партицировать по месяцам (буфер сообщений) . Т.е. изменений в прошлых месяцах не бывает. Хочу реализовать партицирование с возможностью убирать данные из прошлых месяцев безвозвратно в архив для освобождения места т.е. если они понадобятся восстановить одну партицию. Мне пока пришел в голову только один вариант а) Сделать партицированную таблицу перелить туда нужные данные. б) По прошествии нескольких месяцев - прошлый период заархивировать , а после выполнить команду TRUNCATE TABLE PartitionTable1 WITH (PARTITIONS (2, в) Сделать shrink файловой группы заархивированной партиции тем самым освободив место Из минусов - truncate по партиции поддерживается только в SQL Server 2016 (13.x), а у меня 2008r2 но это решаемо. Как понимаю штатных средств сделать отсоединение партиции нет ни в какой версии MS SQL Server. Возможно есть какие то еще варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 20:36 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
selis76 Как понимаю штатных средств сделать отсоединение партиции нет ни в какой версии MS SQL Server. См. ALTER TABLE ... SWITCH ... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 21:21 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
alexeyvg selis76 Как понимаю штатных средств сделать отсоединение партиции нет ни в какой версии MS SQL Server. См. ALTER TABLE ... SWITCH ... Видел в доке но не понимаю как оно мне может помочь в вопрос освобождения места. Основная цель, легко отстегивать партиции в архив освобождая место на дисках. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 21:28 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
selis76 alexeyvg Как это нет, для чего тогда нужны партиции??? См. ALTER TABLE ... SWITCH ... Видел в доке но не понимаю как оно мне может помочь в вопрос освобождения места. Основная цель, легко отстегивать партиции в архив освобождая место на дисках. Я бы хотел, что бы в сиквеле можно было отсоединить файлгруппу от базы, и подсоединить её к другой базе - вот это было бы "отстёгивать в архив". Или положить файлы на ленту, а потом, через 10 лет, подсоединить к этой или другой базе. Так что будем считать, что вы как то там перенесли данные из партиции в архив, и теперь хотите освободить место. Для этого 1) делаете пустую таблицу, такую же, как партицированная, но без секциониролвания. 2) Потом делаете ALTER TABLE ... SWITCH ..., и данные секции оказываются в этой новой таблице, а партиция освобождается. 3) Далее, если данные не нужны, дропаете эту таблицу (или делаете TRUNCATE) - место освободилось. 4) Далее, если вам не нужна пустая секция, то можете её схлопнуть, выполнив ALTER PARTITION FUNCTION ... MERGE RANGE. Но для освобождения места это не нужно. 5) (если партиции в отдельных файлгруппах) После этого можно либо шринкнуть файл до пустого (если не делать (4)), либо его удалить (если делать (4)) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 21:42 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
selis76, "Легко отстегивать" легко. Но вот перемещать в архив придется переливкой. Волшебства, по которому кусок дынных из одного файла "легко" переместится в другой, нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 21:43 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
alexeyvg 1) делаете пустую таблицу, такую же, как партицированная, но без секциониролвания. alexeyvg 3) Далее, если данные не нужны, дропаете эту таблицу (или делаете TRUNCATE) - место освободилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 21:45 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич selis76, "Легко отстегивать" легко. Но вот перемещать в архив придется переливкой. Волшебства, по которому кусок дынных из одного файла "легко" переместится в другой, нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 21:45 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
selis76, Давайте начнет с другого. А что вы в точности понимаете под "архивировать" партицию или её данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 08:02 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
selis76 Посоветуйте лучший вариант. Тупо делать Код: sql 1. 2. 3. 4.
И не выдумывать приключений на собственную задницу. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 10:02 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
aleks222 selis76 Посоветуйте лучший вариант. Тупо делать Код: sql 1. 2. 3. 4.
И не выдумывать приключений на собственную задницу. Но если данных действительно много, то приходится оптимизировать (как у selis76 - непонятно, про размеры он не писал). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 10:24 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
alexeyvg selis76 пропущено... Видел в доке но не понимаю как оно мне может помочь в вопрос освобождения места. Основная цель, легко отстегивать партиции в архив освобождая место на дисках. Я бы хотел, что бы в сиквеле можно было отсоединить файлгруппу от базы, и подсоединить её к другой базе - вот это было бы "отстёгивать в архив". Или положить файлы на ленту, а потом, через 10 лет, подсоединить к этой или другой базе. Так что будем считать, что вы как то там перенесли данные из партиции в архив, и теперь хотите освободить место. ..... Задача простая - взять секцию данных (за месяц) положить на ленту, а если ктото попросит архивные данные вернуть их в секцию той же таблицы. Поскольку это последовательный буфер сообщений, причины возврата секции могут быть разные напр нужно переимпортировать данные в незакрытом годе по новому алгоритму, либо аудиторы попросят исходные данные на основе которых были транзакции. Эти причины сравнительно редкие, а объем за год 400 миллионов записей с XML полем, и гдето 5 терабайт. Bcp даже месяц таких данных тяжело переваривает, а зеркалировать это для отказоустойчивости накладно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 12:19 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
aleks222 selis76 Посоветуйте лучший вариант. Тупо делать Код: sql 1. 2. 3. 4.
И не выдумывать приключений на собственную задницу. Без приключений в моем случае никак, Transaction log нерезиновый когда за год 400 миллионов записей , а если пакетами записей делать, то нужно городить хороший скрипт на TSQL . Delete самая накладная операция , да еще индексы все затормозят а их отключать нельзя, поскольку это буфер сообщений который должен быть почти всегда Online ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 12:28 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
selis76, если только копировать секцию в новую базу и эту базу бэкапить. Саму секцию очищать при помощи switch/truncate. Обратное действие такое же - восстановление бэкапа и копирование в исходную базу, если требуется, через промежуточную таблицу/switch. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 13:24 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
selis76 alexeyvg пропущено... "Отстёгивать в архив" не совсем понятное задание :-) Я бы хотел, что бы в сиквеле можно было отсоединить файлгруппу от базы, и подсоединить её к другой базе - вот это было бы "отстёгивать в архив". Или положить файлы на ленту, а потом, через 10 лет, подсоединить к этой или другой базе. Так что будем считать, что вы как то там перенесли данные из партиции в архив, и теперь хотите освободить место. ..... Задача простая - взять секцию данных (за месяц) положить на ленту, а если ктото попросит архивные данные вернуть их в секцию той же таблицы. Поскольку это последовательный буфер сообщений, причины возврата секции могут быть разные напр нужно переимпортировать данные в незакрытом годе по новому алгоритму, либо аудиторы попросят исходные данные на основе которых были транзакции. Эти причины сравнительно редкие, а объем за год 400 миллионов записей с XML полем, и гдето 5 терабайт. Bcp даже месяц таких данных тяжело переваривает, а зеркалировать это для отказоустойчивости накладно. Увы, просто скопировать файлы секции нельзя. так что только либо копировать данные, либо выгружать bcp. Зеркалирование тут неважно, оно же не заменяет бакапа/выгрузки в архив. По моему опыту, bcp в нейтив формат будет быстрый. Секции на месяц будут по полтеррабайта, в общем не особо много, но, конечно, дисковые подсистемы должны соответствовать. У меня были ссуточные секции по 150 гигов, не помню точно, сколько их bcp выгружал, но вроде меньше часа. На слабом железе. Выгружать лучше из отсоединённой секции, что бы уж точно ничего не блокировать, и потом удалять эти данные, после проверки корректности выгрузки, и записи её на ленту. Владислав Колосов если только копировать секцию в новую базу и эту базу бэкапить Но этот вариант тоже можно проверить. Прямо делать select * into из отсоединённой секции. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 15:02 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
selis76 aleks222 пропущено... Тупо делать Код: sql 1. 2. 3. 4.
И не выдумывать приключений на собственную задницу. Без приключений в моем случае никак, Transaction log нерезиновый когда за год 400 миллионов записей , а если пакетами записей делать, то нужно городить хороший скрипт на TSQL . Delete самая накладная операция , да еще индексы все затормозят а их отключать нельзя, поскольку это буфер сообщений который должен быть почти всегда Online Не смешите мои тапочки. Весь скрипт: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 15:18 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
aleks222 Код: sql 1.
Вы всерьез считаете это оптимальным методом? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 15:23 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
msLex aleks222 Код: sql 1.
Вы всерьез считаете это оптимальным методом? Секция страдальцу НЕ нужна. Кластерный индекс по дате и фсе. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 15:24 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
aleks222, И правда, транкейт для трусов. Он же примерно около 0 байт в лог напишет, не будет долго и упорно на вторичной реплике применяться, не будет долго и упорно в лог бэкапиться. Скукотища, в общем. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 15:27 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
aleks222 Секция страдальцу НЕ нужна. Кластерный индекс по дате и фсе. По моему, это как раз тот случай, когда нужно использовать секционирование. Не то, что без него не обойтись (удаление по 20 гб в день мелкими порциями вполне реально, при кластерном индексе по дате), но польза будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 15:29 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич aleks222, И правда, транкейт для трусов. Он же примерно около 0 байт в лог напишет, не будет долго и упорно на вторичной реплике применяться, не будет долго и упорно в лог бэкапиться. Скукотища, в общем. Ну, если бы надо было только транкейтнуть. Желания страдальца немного шире. alexeyvg aleks222 Секция страдальцу НЕ нужна. Кластерный индекс по дате и фсе. По моему, это как раз тот случай, когда нужно использовать секционирование. Не то, что без него не обойтись (удаление по 20 гб в день мелкими порциями вполне реально, при кластерном индексе по дате), но польза будет. Если цель: быстро и сразу. Да флаг ему в руки. Только куда торопиться? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 16:15 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
alexeyvg, пустую базу можно создавать сразу нужного размера, если применить bulk вставку при помощи SSIS, то должно быть быстро. Плюс надежность резервных копий. Хотя у Вас практический опыт применения. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 16:45 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
Владислав Колосов пустую базу можно создавать сразу нужного размера Владислав Колосов Плюс надежность резервных копий. И вообще, можно замутить восстановление (при необходимости) таких баз, и модификацию вьюх для доступа к архивным "секциям" (объединяя архивные данные ) Если стоит задача регулярного доступа к архивным данным, то получится быстро. PS Мы SSIS не применяли, потому что у нас архивный сервер был доступен только по sftp, поэтому была такая извращённая схема. PPS А только по sftp, потому что сетевые админы клиента где то случайно закрыли порты, и не знали, где ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 17:56 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
alexeyvg Владислав Колосов пустую базу можно создавать сразу нужного размера Владислав Колосов Плюс надежность резервных копий. И вообще, можно замутить восстановление (при необходимости) таких баз, и модификацию вьюх для доступа к архивным "секциям" (объединяя архивные данные ) Если стоит задача регулярного доступа к архивным данным, то получится быстро. PS Мы SSIS не применяли, потому что у нас архивный сервер был доступен только по sftp, поэтому была такая извращённая схема. PPS А только по sftp, потому что сетевые админы клиента где то случайно закрыли порты, и не знали, где спасибо за развернутый ответ но как я понимаю bcp индексы не сохраняет потом их ребилдить отдельно - неудобно, но решаемо ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 14:44 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
Владислав Колосов alexeyvg, пустую базу можно создавать сразу нужного размера, если применить bulk вставку при помощи SSIS, то должно быть быстро. Плюс надежность резервных копий. Хотя у Вас практический опыт применения. В принципе красиво будет, как понимаю switch на другую базу пройдет сразу с индексами ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 14:45 |
|
Партицирование с возможностью убрать партицию в архив
|
|||
---|---|---|---|
#18+
selis76 Владислав Колосов alexeyvg, пустую базу можно создавать сразу нужного размера, если применить bulk вставку при помощи SSIS, то должно быть быстро. Плюс надежность резервных копий. Хотя у Вас практический опыт применения. В принципе красиво будет, как понимаю switch на другую базу пройдет сразу с индексами А есть способ перекинуть файловую группу или файл БД из одной БД в другую БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 14:52 |
|
|
start [/forum/search_topic.php?author=%D0%A7%D0%B5+%D0%BF%D0%B0%D1%86%D0%B0%D0%BD%D1%8B%2C+%D0%B0%D0%BD%D0%B8%D0%BC%D1%8D7&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 867ms |
total: | 1083ms |
0 / 0 |