Поэтапное сжатие БД MS SQL Server

1. cad2206 19.11.21 16:40 Сейчас в теме
Добрый день.

На MS SQL Server имеется БД. Ее размер 830ГБт. Появилось желание сжать ее и попробовать в работе. На тестовом сервере сжал исходя из этой статьи https://infostart.ru/1c/articles/692209/. По времени около 20 часов. После сжатия тестировали, в производительности выиграли сильно.

Исходя из то, что остановить работу на 20 часов не представляется возможным (объекты работают с утра до вечера 7 дней в неделю), вопрос: Как поэтапно, скажем за несколько ночей сжать базу? Имея ввиду еще то, что ночью запускается обслуживание БД (бекап, дефрагментация индексов, обновление статистики)

Пока на ум приходит алгоритм 1:
1. Получили список таблиц (в БД их порядка 5000)
2. Поделили на части (например по 500 таблиц), сохранили эти части где то в виде списков таблиц (получится 10 частей)
2. И каждую ночь прогоняем по одной части

Или алгоритм 2:
1. Каждую ночь получаем список таблиц и пробегаем по нему до наступления утра.
2. Если встречаем таблицу или индекс с параметром сжатия NONE, сжимаем его
По идее за несколько проходов вся база сожмется. Но я не нашел как получить параметр сжатия именно у индекса.

Или есть более грамотные решения?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. XAKEP 19.11.21 17:29 Сейчас в теме
посмотрите , какие таблицы "большие" и сколько реально занимает места база и журнал
3. cad2206 19.11.21 17:38 Сейчас в теме
(2)База восстановлена из бекапа. Журнал после принудительного сжатия (журнала) занимает 100МБт, база 830ГБт. До сжатия журнал весил 230ГБт, а вот на размер базы не обратил внимания.

Что мне даст список больших таблиц?
4. XAKEP 19.11.21 17:41 Сейчас в теме
(3)
качество обслуживания и ведения учета
5. cad2206 19.11.21 17:48 Сейчас в теме
(4)Получу я этот список с большими таблицами, что дальше?
6. cad2206 22.11.21 12:43 Сейчас в теме
И вопрос, ответ на который поможет мне быстрее понять, как правильно сделать: команда ALT ER TABLE 'TableName' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE) сжимает данные в таблице, или же только устанавливает флаг сжатия и сжимаются данные, которые пишутся в нее после установки флага?
Если только устанавливается флаг, то данные сжимаются командой DBCC SHRINKDATABASE?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот