|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
Добрый день. На MS SQL Server имеется БД. Ее размер 830ГБт. Появилось желание сжать ее и попробовать в работе. На тестовом сервере сжал исходя из этой статьи https://infostart.ru/1c/articles/692209/. По времени около 20 часов. После сжатия тестировали, в производительности выиграли сильно. Исходя из то, что остановить работу на 20 часов не представляется возможным (объекты работают с утра до вечера 7 дней в неделю), вопрос: Как поэтапно, скажем за несколько ночей сжать базу? Имея ввиду еще то, что ночью запускается обслуживание БД (бекап, дефрагментация индексов, обновление статистики) Пока на ум приходит алгоритм 1: 1. Получили список таблиц (в БД их порядка 5000) 2. Поделили на части (например по 500 таблиц), сохранили эти части где то в виде списков таблиц (получится 10 частей) 2. И каждую ночь прогоняем по одной части Или алгоритм 2: 1. Каждую ночь получаем список таблиц и пробегаем по нему до наступления утра. 2. Если встречаем таблицу или индекс с параметром сжатия NONE, сжимаем его По идее за несколько проходов вся база сожмется. Но я не нашел как получить параметр сжатия именно у индекса. Или есть более грамотные решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 08:47 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
cad2206, давно нашел скрипт (он для SAP изначально) может пригодится: ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 09:24 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
архивариус, посмотрел скрипт, мудрено. Но не понял в чем его особенность. Он так же долго будет сжимать базу. Или я что то проглядел? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 09:43 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
cad2206 Добрый день. На MS SQL Server имеется БД. Ее размер 830ГБт. Появилось желание сжать ее и попробовать в работе. На тестовом сервере сжал исходя из этой статьи https://infostart.ru/1c/articles/692209/. По времени около 20 часов. После сжатия тестировали, в производительности выиграли сильно. Исходя из то, что остановить работу на 20 часов не представляется возможным (объекты работают с утра до вечера 7 дней в неделю), вопрос: Как поэтапно, скажем за несколько ночей сжать базу? Имея ввиду еще то, что ночью запускается обслуживание БД (бекап, дефрагментация индексов, обновление статистики) Пока на ум приходит алгоритм 1: 1. Получили список таблиц (в БД их порядка 5000) 2. Поделили на части (например по 500 таблиц), сохранили эти части где то в виде списков таблиц (получится 10 частей) 2. И каждую ночь прогоняем по одной части Или алгоритм 2: 1. Каждую ночь получаем список таблиц и пробегаем по нему до наступления утра. 2. Если встречаем таблицу или индекс с параметром сжатия NONE, сжимаем его По идее за несколько проходов вся база сожмется. Но я не нашел как получить параметр сжатия именно у индекса. Или есть более грамотные решения? 1. Чудеса, прям, глаголите. Сжали усе и... завертелось. Мой хрустальный шар немного потрескался, но более вероятно, что перестроение индексов вызвало обновление статистики. 2. Ну хотите и не можете найти (хотя искали ли?) признак сжатия на таблице. Делаете списочек таблиц и по одной табличке из списка ночью сжимаете. 3. Займитесь более продуктивной деятельностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 10:37 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
cad2206, никаких особенностей, он просто делает то что вам нужно. хотите свой пишите. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 10:39 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
cad2206 Но я не нашел как получить параметр сжатия именно у индекса. Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 10:42 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
aleks222, 1. Сжал, отдал 1С программистам на тесты, 3 дня тестировали нагрузку и т.п. Показали результаты, прирост в производительности есть. Делали тестирование и исправление БД, все в норме. Чего ожидать можно еще? 2. Признак сжатия таблицы я могу найти, например так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Я не могу найти признак сжатия именно у индекса таблицы. Сжимать по одной таблице за ночь 5000 таблиц, это как бы 13 лет) 3. "Займитесь более продуктивной деятельностью." - например? Я без всякого сарказма. Предполагаю, что чего то могу не понимать, поэтому и пишу тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 10:54 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
архивариус, спасибо. Но мне бы хотелось получить советы, как грамотно организовать алгоритм поэтапного сжатия, не останавливая работу. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 10:56 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
4es, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 11:05 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
aleks222 1. Чудеса, прям, глаголите. Сжали усе и... завертелось. Мой хрустальный шар немного потрескался, но более вероятно, что перестроение индексов вызвало обновление статистики. Почему это чудеса? Вполне реально, что производительность улучшилась просто за счет того, что теперь с диска меньше данных читается. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 12:16 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
И вопрос, ответ на который поможет мне быстрее понять, как правильно сделать: команда ALTER TABLE 'TableName' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE) сжимает данные в таблице, или же только устанавливает флаг сжатия и сжимаются данные, которые пишутся в нее после установки флага? Если только устанавливается флаг, то данные сжимаются командой DBCC SHRINKDATABASE? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 12:42 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
cad2206 И вопрос, ответ на который поможет мне быстрее понять, как правильно сделать: команда ALTER TABLE 'TableName' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE) сжимает данные в таблице, или же только устанавливает флаг сжатия и сжимаются данные, которые пишутся в нее после установки флага? Если только устанавливается флаг, то данные сжимаются командой DBCC SHRINKDATABASE? Рано те "сжимать таблицы". Учиться надо. ALTER TABLE 'TableName' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE) Толсто намекает. А время, потребное для оной операции, подтверждает толстый намек. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:30 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
cad2206 aleks222, 1. Сжал, отдал 1С программистам на тесты, 3 дня тестировали нагрузку и т.п. Показали результаты, прирост в производительности есть. Делали тестирование и исправление БД, все в норме. Чего ожидать можно еще? Ну я так понимаю, UPDATE STATISTICS with fullscan вы тоже делали? И тоже тестировали? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:34 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
Про сжатие онлайн автору темы кто-нибудь говорил, про версию его сервера спрашивали? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:55 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
aleks222, авторРано те "сжимать таблицы". Учиться надо. Как раз я и учусь. Поэтому и вопросы задаю. А можно научиться не пробуя? авторALTER TABLE 'TableName' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE) Толсто намекает. А время, потребное для оной операции, подтверждает толстый намек. Да, уже убедился. авторНу я так понимаю, UPDATE STATISTICS with fullscan вы тоже делали? Нет, с параметром FULLSCAN не запускал, обновлял так: Код: sql 1. 2. 3.
Стоит обновить с этим параметром? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 15:52 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
.Евгений, авторПро сжатие онлайн автору темы кто-нибудь говорил Пока не говорили, надеюсь Вы подскажете) авторпро версию его сервера спрашивали? Тестирую на 2014 и на 2019 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 15:56 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
cad2206, сжатие возможно выполнять онлайн (не на всех версиях MS SQL). В большинстве случаев это позволяет не останавливать работу (но подтормаживать ее). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 16:20 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
Надо еще понять, а какие действия именно ТС называет "сжатием базы". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 16:42 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
.Евгений, Понял, про что Вы. Код: sql 1.
Нужно экспериментировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 16:52 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
Владислав Колосов, Именно те действия, которые описаны в статье, ссылку на которую я указал в первом сообщении (https://infostart.ru/1c/articles/692209/) и затем возвратить свободное место на диск методом DBCC SHRINKDATABASE ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 16:58 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
cad2206 .Евгений, Понял, про что Вы. Код: sql 1.
Нужно экспериментировать. C (resumable = on) осторожнее экспериментируйте. Остановка процесса не отменяет операцию, а ставит ее на паузу. Это значит что у вас по прежнему будет висеть недоделанная версия индекса и любая модификация будет затрагивать оба этих индекса. Для полной отмены нужно выполнить alter index ... abort ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 17:00 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
КритикВполне реально, что производительность улучшилась просто за счет того, что теперь с диска меньше данных читается.Такое может получится только если CPU (лицензируемое) некуда девать, а дисковая система полный шлак. Надувной матрас - классное решение для маленькой квартирки, но надувать его по вечерам и сдувать по утрам - так себе занятие. cad2206Или есть более грамотные решения? С какого-то возраста появился вопрос «Зачем?» (с) Мой хрустальный шар показывает зуд попробовать новую игрушку что для (объекты работают с утра до вечера 7 дней в неделю) может быть чреватым. cad2206 "Займитесь более продуктивной деятельностью." - например? Я без всякого сарказма. Предполагаю, что чего то могу не понимать, поэтому и пишу тут.ИМХО имеет смысл сжимать только партиции со старыми данными, которые никому особо не нужны, замерив выгоду для сжатия и решив стоит ли оно того. Вместо сжатия ВСЕГО ПОДРЯД посмотрите на свои таблицы. Уверен что из 5000 большая часть это справочники которые сжимать нет смысла. Выберите десяток другой больших таблиц (желательно секционированых по дате) и сжимайте только старые партиции в которых нет записи (а лучше и чтения). Их (монстров) можно сжимать и вручную написаным скриптом. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 17:03 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
SERG1257 Такое может получится только если CPU (лицензируемое) некуда девать, а дисковая система полный шлак. Какой бы крутой не была дисковая подсистема, она все равно будет существенно уступать по скорости RAM. При включении сжатия данных, в тот же объем RAM уместиться больше (иногда, значительно) данных, и это снизит (иногда, значительно) количество необходимых физических чтений. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 17:08 |
|
Поэтапное сжатие БД MS SQL Server
|
|||
---|---|---|---|
#18+
cad2206, Если после DBCC SHRINKDATABASE улучшилась производительность, то возможны проблемы с физическим носителем, начиная от фрагментации и заканчивая повторяющимися чтениями секторов диска. Либо диск как-то не так отформатирован. После сжатия производительность слегка ухудшается. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 17:09 |
|
|
start [/forum/topic.php?fid=46&msg=40113828&tid=1684055]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 230ms |
total: | 374ms |
0 / 0 |