Сжатие таблиц базы 1С в MS SQL: сравнение ROW и PAGE
Симптомы дисковых перегрузок и разрастания базы 1С в СУБД
По мере накопления исторических данных в информационных базах 1С (особенно в конфигурациях ERP, КА, УТ 11) администраторы сталкиваются с катастрофической нехваткой места на дорогих массивах NVMe SSD, просадкой производительности дисковой подсистемы и вымыванием полезного кэша из буферного пула (Buffer Pool) SQL Server.
| Показатель СУБД | Нормальное значение | Значение при деградации |
|---|---|---|
| Page Life Expectancy (PLE) | > 300 секунд | < 50 секунд (кэш постоянно сбрасывается на диск) |
| Среднее время задержки I/O (Avg Disk sec/Read) | < 5 мс | > 25–50 мс (диски перегружены чтением) |
| Размер таблиц регистров бухгалтерии/накопления | Плановый рост | Сотни гигабайт с преобладанием повторяющихся GUID |
Сравнение и применение технологий сжатия ROW и PAGE для 1С
- Различия между методами сжатия:
- ROW (Строчное сжатие): оптимизирует хранение фиксированных типов данных (например, целые числа хранятся только в фактически занятых байтах, а не во всем выделенном типе
INT/BIGINT; обрезаются концевые пробелы строк). Дает экономию диска 15–30% с минимальной нагрузкой на процессор хоста (рост CPU +2-5%). - PAGE (Страничное сжатие): включает в себя ROW-сжатие, дополняя его префиксным сжатием (Prefix Compression) и сжатием по словарю страницы (Dictionary Compression). Идеально подходит для 1С, где таблицы переполнены одинаковыми значениями измерений, дат и повторяющихся ссылок GUID. Дает экономию диска 40–70%, но требует 10–15% дополнительной мощности процессора при операциях модификации данных (INSERT/UPDATE).
- ROW (Строчное сжатие): оптимизирует хранение фиксированных типов данных (например, целые числа хранятся только в фактически занятых байтах, а не во всем выделенном типе
- Оценка потенциального выигрыша перед запуском сжатия:
Выполните встроенную системную процедуру для целевой таблицы (например, регистра накопления):
EXEC sp_estimate_data_compression_savings @schema_name = 'dbo', @object_name = '_AccumRg12345', @index_id = NULL, @partition_number = NULL, @data_compression = 'PAGE'; - Скрипт включения сжатия PAGE на исторические регистры 1С:
Сжатие рекомендуется применять к редко изменяемым крупным таблицам и индексам:
-- Сжатие кучи / кластерного индекса таблицы: ALTER TABLE dbo._AccumRg12345 REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE); -- Сжатие некластерных индексов таблицы: ALTER INDEX ALL ON dbo._AccumRg12345 REBUILD WITH (DATA_COMPRESSION = PAGE); - Общее правило выбора для инфраструктуры 1С:
- Если узким местом сервера является дисковая подсистема (I/O) и не хватает оперативной памяти (низкий PLE) при свободном CPU (< 50%) — используйте PAGE. Сжатые страницы попадают в RAM прямо в сжатом виде, увеличивая эффективный объем кэша в 2-3 раза.
- Если процессор сервера СУБД загружен на 80-90% — используйте ROW или откажитесь от сжатия.
Критическое предупреждение для 1С: При реструктуризации таблиц через Конфигуратор 1С (например, при обновлении конфигурации) платформа пересоздает таблицы начисто, и настройки сжатия SQL Server сбрасываются на значения по умолчанию. Регламент повторного сжатия таблиц должен выполняться автоматически через SQL Server Agent.
Частые вопросы (FAQ)
Поддерживается ли сжатие данных в бесплатной редакции SQL Server Express?
Начиная с SQL Server 2016 Service Pack 1, технологии строчного (ROW) и страничного (PAGE) сжатия поддерживаются во всех редакциях СУБД, включая Standard и Express (ранее требовалась исключительно редакция Enterprise).
Как сжатие таблиц влияет на скорость резервного копирования?
Сжатие таблиц существенно ускоряет резервное копирование (Backup), так как размер считываемых с диска страниц уменьшается в 2-3 раза, снижая общее окно создания резервных копий.
Можно ли сжимать базу 1С в режиме реального времени без остановки пользователей?
Да, команда ALTER TABLE ... REBUILD WITH (DATA_COMPRESSION = PAGE, ONLINE = ON) в редакции Enterprise может выполняться в онлайне. В редакции Standard таблица монопольно блокируется на время перестроения.
Какие таблицы в базе 1С категорически не рекомендуется сжимать через PAGE?
Не сжимайте часто модифицируемые оперативные таблицы с высокой интенсивностью операций вставки/удаления: таблицы очередей, константы, таблицы регистрации изменений планов обмена.