Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поэтапное сжатие БД MS SQL Server / 25 сообщений из 107, страница 1 из 5
22.11.2021, 08:47
    #40113649
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
Добрый день.

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

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

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

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

Или есть более грамотные решения?
...
Рейтинг: 0 / 0
22.11.2021, 09:24
    #40113651
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
cad2206,

давно нашел скрипт (он для SAP изначально) может пригодится:
...
Рейтинг: 0 / 0
22.11.2021, 09:43
    #40113654
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
архивариус,
посмотрел скрипт, мудрено. Но не понял в чем его особенность. Он так же долго будет сжимать базу. Или я что то проглядел?
...
Рейтинг: 0 / 0
22.11.2021, 10:37
    #40113669
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
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. Займитесь более продуктивной деятельностью.
...
Рейтинг: 0 / 0
22.11.2021, 10:39
    #40113672
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
cad2206,

никаких особенностей, он просто делает то что вам нужно. хотите свой пишите.
...
Рейтинг: 0 / 0
22.11.2021, 10:42
    #40113675
4es
4es
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
cad2206
Но я не нашел как получить параметр сжатия именно у индекса.

Код: sql
1.
2.
3.
4.
5.
select
   object_name(i.object_id) as ObjectName, i.name as IndexName, p.data_compression, p.data_compression_desc, p.partition_id
from sys.indexes i
inner join sys.partitions p
   on p.object_id = i.object_id and p.index_id = i.index_id
...
Рейтинг: 0 / 0
22.11.2021, 10:54
    #40113680
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
aleks222,

1. Сжал, отдал 1С программистам на тесты, 3 дня тестировали нагрузку и т.п. Показали результаты, прирост в производительности есть. Делали тестирование и исправление БД, все в норме. Чего ожидать можно еще?

2. Признак сжатия таблицы я могу найти, например так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT st.name,
       CAST(ROUND(((SUM(au.total_pages)*8)/1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
       CAST(ROUND(((SUM(au.used_pages)*8)/1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB,
       sp.index_id,
       sp.data_compression
FROM sys.tables st
LEFT JOIN  sys.partitions sp on st.object_id = sp.object_id
INNER JOIN sys.allocation_units au ON sp.partition_id = au.container_id

group by st.name, sp.index_id, sp.data_compression
order by UsedSpaceMB desc


Я не могу найти признак сжатия именно у индекса таблицы.
Сжимать по одной таблице за ночь 5000 таблиц, это как бы 13 лет)

3. "Займитесь более продуктивной деятельностью." - например? Я без всякого сарказма. Предполагаю, что чего то могу не понимать, поэтому и пишу тут.
...
Рейтинг: 0 / 0
22.11.2021, 10:56
    #40113683
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
архивариус,
спасибо. Но мне бы хотелось получить советы, как грамотно организовать алгоритм поэтапного сжатия, не останавливая работу.
...
Рейтинг: 0 / 0
22.11.2021, 11:05
    #40113686
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
4es,
спасибо
...
Рейтинг: 0 / 0
22.11.2021, 12:16
    #40113704
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
aleks222

1. Чудеса, прям, глаголите.
Сжали усе и... завертелось.
Мой хрустальный шар немного потрескался, но более вероятно, что перестроение индексов вызвало обновление статистики.


Почему это чудеса?
Вполне реально, что производительность улучшилась просто за счет того, что теперь с диска меньше данных читается.
...
Рейтинг: 0 / 0
22.11.2021, 12:42
    #40113721
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
И вопрос, ответ на который поможет мне быстрее понять, как правильно сделать: команда ALTER TABLE 'TableName' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE) сжимает данные в таблице, или же только устанавливает флаг сжатия и сжимаются данные, которые пишутся в нее после установки флага?
Если только устанавливается флаг, то данные сжимаются командой DBCC SHRINKDATABASE?
...
Рейтинг: 0 / 0
22.11.2021, 13:30
    #40113738
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
cad2206
И вопрос, ответ на который поможет мне быстрее понять, как правильно сделать: команда ALTER TABLE 'TableName' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE) сжимает данные в таблице, или же только устанавливает флаг сжатия и сжимаются данные, которые пишутся в нее после установки флага?
Если только устанавливается флаг, то данные сжимаются командой DBCC SHRINKDATABASE?


Рано те "сжимать таблицы". Учиться надо.

ALTER TABLE 'TableName' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE)

Толсто намекает. А время, потребное для оной операции, подтверждает толстый намек.
...
Рейтинг: 0 / 0
22.11.2021, 13:34
    #40113743
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
cad2206
aleks222,
1. Сжал, отдал 1С программистам на тесты, 3 дня тестировали нагрузку и т.п. Показали результаты, прирост в производительности есть. Делали тестирование и исправление БД, все в норме. Чего ожидать можно еще?


Ну я так понимаю, UPDATE STATISTICS with fullscan вы тоже делали?
И тоже тестировали?
...
Рейтинг: 0 / 0
22.11.2021, 13:55
    #40113755
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
Про сжатие онлайн автору темы кто-нибудь говорил, про версию его сервера спрашивали?
...
Рейтинг: 0 / 0
22.11.2021, 15:52
    #40113804
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
aleks222,
авторРано те "сжимать таблицы". Учиться надо.
Как раз я и учусь. Поэтому и вопросы задаю. А можно научиться не пробуя?

авторALTER TABLE 'TableName' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE)

Толсто намекает. А время, потребное для оной операции, подтверждает толстый намек.
Да, уже убедился.


авторНу я так понимаю, UPDATE STATISTICS with fullscan вы тоже делали?
Нет, с параметром FULLSCAN не запускал, обновлял так:
Код: sql
1.
2.
3.
use DBName
GO  
exe sp_updatestats


Стоит обновить с этим параметром?
...
Рейтинг: 0 / 0
22.11.2021, 15:56
    #40113807
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
.Евгений,
авторПро сжатие онлайн автору темы кто-нибудь говорил
Пока не говорили, надеюсь Вы подскажете)

авторпро версию его сервера спрашивали?
Тестирую на 2014 и на 2019
...
Рейтинг: 0 / 0
22.11.2021, 16:20
    #40113817
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
cad2206,

сжатие возможно выполнять онлайн (не на всех версиях MS SQL). В большинстве случаев это позволяет не останавливать работу (но подтормаживать ее).
...
Рейтинг: 0 / 0
22.11.2021, 16:42
    #40113821
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
Надо еще понять, а какие действия именно ТС называет "сжатием базы".
...
Рейтинг: 0 / 0
22.11.2021, 16:52
    #40113825
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
.Евгений,
Понял, про что Вы.
Код: sql
1.
alter index IndexName on TableName rebuild with (resumable = on, online = on)


Нужно экспериментировать.
...
Рейтинг: 0 / 0
22.11.2021, 16:58
    #40113828
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
Владислав Колосов,
Именно те действия, которые описаны в статье, ссылку на которую я указал в первом сообщении (https://infostart.ru/1c/articles/692209/) и затем возвратить свободное место на диск методом DBCC SHRINKDATABASE
...
Рейтинг: 0 / 0
22.11.2021, 17:00
    #40113833
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
cad2206
.Евгений,
Понял, про что Вы.
Код: sql
1.
alter index IndexName on TableName rebuild with (resumable = on, online = on)


Нужно экспериментировать.


C (resumable = on) осторожнее экспериментируйте.

Остановка процесса не отменяет операцию, а ставит ее на паузу.
Это значит что у вас по прежнему будет висеть недоделанная версия индекса и любая модификация будет затрагивать оба этих индекса.

Для полной отмены нужно выполнить alter index ... abort
...
Рейтинг: 0 / 0
22.11.2021, 17:03
    #40113839
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
КритикВполне реально, что производительность улучшилась просто за счет того, что теперь с диска меньше данных читается.Такое может получится только если CPU (лицензируемое) некуда девать, а дисковая система полный шлак.
Надувной матрас - классное решение для маленькой квартирки, но надувать его по вечерам и сдувать по утрам - так себе занятие.

cad2206Или есть более грамотные решения? С какого-то возраста появился вопрос «Зачем?» (с)
Мой хрустальный шар показывает зуд попробовать новую игрушку что для (объекты работают с утра до вечера 7 дней в неделю) может быть чреватым.
cad2206 "Займитесь более продуктивной деятельностью." - например? Я без всякого сарказма. Предполагаю, что чего то могу не понимать, поэтому и пишу тут.ИМХО имеет смысл сжимать только партиции со старыми данными, которые никому особо не нужны, замерив выгоду для сжатия и решив стоит ли оно того.
Вместо сжатия ВСЕГО ПОДРЯД посмотрите на свои таблицы. Уверен что из 5000 большая часть это справочники которые сжимать нет смысла.
Выберите десяток другой больших таблиц (желательно секционированых по дате) и сжимайте только старые партиции в которых нет записи (а лучше и чтения). Их (монстров) можно сжимать и вручную написаным скриптом.
...
Рейтинг: 0 / 0
22.11.2021, 17:08
    #40113843
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
SERG1257
Такое может получится только если CPU (лицензируемое) некуда девать, а дисковая система полный шлак.




Какой бы крутой не была дисковая подсистема, она все равно будет существенно уступать по скорости RAM.

При включении сжатия данных, в тот же объем RAM уместиться больше (иногда, значительно) данных, и это снизит (иногда, значительно) количество необходимых физических чтений.
...
Рейтинг: 0 / 0
22.11.2021, 17:09
    #40113844
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
cad2206,

Если после DBCC SHRINKDATABASE улучшилась производительность, то возможны проблемы с физическим носителем, начиная от фрагментации и заканчивая повторяющимися чтениями секторов диска. Либо диск как-то не так отформатирован. После сжатия производительность слегка ухудшается.
...
Рейтинг: 0 / 0
22.11.2021, 17:18
    #40113850
cad2206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поэтапное сжатие БД MS SQL Server
Владислав Колосов,
Хм, все СХД только SSD...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поэтапное сжатие БД MS SQL Server / 25 сообщений из 107, страница 1 из 5
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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