Гайд 1С: Настройка механизма сжатия таблиц (Page Compression) в MS SQL Server
- Буферный кэш СУБД переполнен, значение
Page Life Expectancy (PLE)падает ниже 300 секунд. - Дисковая подсистема испытывает высокую нагрузку на операциях чтения больших исторических регистров.
- Размер файлов базы данных превышает доступную емкость скоростных дисковых массивов.
1. Принцип работы Page Compression в 1С
Сжатие страниц (Page Compression) включает префиксное и словарное сжатие данных на 8-килобайтной странице SQL Server. Это позволяет уменьшить размер таблиц 1С на 40–70%. Сжатые страницы хранятся сжатыми как на диске, так и в оперативной памяти (RAM), что кратно увеличивает емкость буферного пула СУБД.
2. Оценка потенциала сжатия через sp_estimate_data_compression_savings
EXEC sp_estimate_data_compression_savings
@schema_name = 'dbo',
@object_name = '_AccumRg12345', -- Имя таблицы регистра в СУБД
@index_id = NULL,
@partition_number = NULL,
@data_compression = 'PAGE';3. Включение сжатия для крупных таблиц и индексов
-- Сжатие кластерного индекса таблицы (самой таблицы)
ALTER TABLE [dbo].[_AccumRg12345]
REBUILD WITH (DATA_COMPRESSION = PAGE, ONLINE = ON);
-- Сжатие всех некластерных индексов таблицы
ALTER INDEX ALL ON [dbo].[_AccumRg12345]
REBUILD WITH (DATA_COMPRESSION = PAGE, ONLINE = ON); Частые вопросы (FAQ)
Увеличивает ли Page Compression нагрузку на процессор (CPU)?
Распаковка и упаковка страниц требует дополнительных циклов CPU (обычно +5–10% к общей утилизации). Однако за счет резкого снижения дискового I/O общая производительность 1С на современных CPU практически всегда возрастает.
Для каких таблиц 1С сжатие страниц дает максимальный эффект?
Максимальный выигрыш достигается на таблицах движений регистров накопления, бухгалтерии, версионирования объектов и регистрах сведений с большим количеством строковых и составных данных.
Сохранится ли сжатие страниц после реструктуризации базы платформой 1С?
Нет. Если таблица подвергается полной реструктуризации при обновлении метаданных в конфигураторе, 1С пересоздает ее без сжатия, и сжатие потребуется применить повторно скриптом обслуживания.
В чем разница между ROW и PAGE сжатием?
ROW убирает оверхед хранения фиксированных типов данных внутри строки. PAGE включает в себя ROW + выполняет межстроковое префиксное и словарное сжатие страницы, давая в 2-3 раза больший коэффициент сжатия.