Настройки 1С для более легкой и удобной работы

О сжатии базы 1С на PostgreSQL

Задача: найти решение, как сократить объем информационной базы 1С на СУБД PostgreSQL. На момент заявки ИБ «распухла» до 236 Гб, и сохраняется тенденция к быстрому росту.

При этом для базы настроен том (папка) для хранения файлов — занимает ~88 Гб на сервере.

Клиент утверждает, что таких объемов данных в самой базе нет. А значит — что-то здесь не так.

Для анализа нам предоставлена выгрузка — bak-файл ~9,3 Гб в формате PostgreSQL. Создана с помощью стандартной утилиты pg_dump.

Параметры тестового стенда:

  • • Windows 10 Pro x64 версия 22H2 (сборка ОС 19045.4651), ОЗУ 24 Гб;
  • • СУБД PostgreSQL for 1C 15.8 x64;
  • • Технологическая платформа 1С 8.3.24.1548 x64.

1. Установка PostgreSQL для 1С

Делаем стандартную установку компонентов СУБД с опциями:

  • ☑ Включить контрольные суммы для страниц;
  • ☑ Настроить переменные среды;
  • ⊙ Провести оптимизацию параметров.
Установка параметров сервера PostgreSQL
Оптимизация производительности сервера

Итог: в системе установлен PostgreSQL и работает системная служба «postgresql-1c-15». Выбор 15-й версии обусловлен конфигурацией СУБД на промышленном сервере.

2. Восстановление базы из бэкапа

Регистрируем в консоли администрирования 1С новую информационную базу под названием «UNF» с признаками:
☑ Создать базу данных в случае ее отсутствия;
☑ Установить блокировку регламентных заданий.

Запускаем восстановление из консоли с правами администратора:

cd "C:\Program Files\PostgreSQL 1C\15\bin"
pg_restore --host localhost --port 5432 --username postgres --dbname UNF --clean --verbose "C:\backup\UNF.backup"

При подключении к базе данных вводим пароль администратора БД и нажимаем Enter. Дожидаемся завершения процесса:

Восстановление информационной базы 1С с помощью pg_restore

База развернута и занимает на диске 151 Гб. Это уже хорошо. По сравнению с рабочим сервером (236 Гб) объем сократился больше, чем на треть (на 36%).

Промежуточный вывод: выгрузка копии базы и повторная загрузка в новую чистую ИБ может положительно сказаться на размере занимаемого ей пространства.

3. Что больше всего занимает места в базе

Первым делом захотелось узнать, какая таблица в базе занимает больше всего места. Для этого использовали внешнюю обработку — epf-файл для получения размеров базы и таблиц. Скачать можно здесь.

Для работы с внешней обработкой требуется учетная запись 1С с правами администратора и группа доступа «Открытие внешних отчетов и обработок».

Файл — Открыть — Размеры таблиц метаданных ИПА (для любой базы 83).epf — Получить размер на все

Таблицы базы и их размер в Мб

Первый «виновник» найден: «РегистрСведений.Б24_К_Логирование» с размером в 120 Гб. Имя таблицы хранения: InfoRg29526. Нужен ли этот лог — вопрос.

Максимальный вес у таблицы Б24_К_Логирование

Руководитель подтвердил, что данные из этого регистра не требуются — поэтому запускаем программную очистку. Используем внешнюю обработку — ОчистикаРегистраСведений1С.epf.

Файл — Открыть — ОчистикаРегистраСведений1С.epf — Имя регистра: Б24_К_Логирование — Очистить регистр

Очистка регистра сведений 1С

При выполнении получили следующую ошибку:
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
по причине:
Ошибка СУБД:
XX001: ERROR: invalid page in block 12443109 of relation base/16398/50289

Подробный текст ошибки

Закрываем 1С и подключаемся к базе с помощью командной строки:

cd "C:\Program Files\PostgreSQL 1C\15\bin"
psql
\c UNF
SELECT pg_filenode_relation(0, 50289);
SET zero_damaged_pages = on;
VACUUM FULL _inforg29526x1;
Восстановление таблицы _inforg29526x1

Новый сюрприз — для завершения операции не хватает места на диске. Добавляем свободного места, и повторно запускаем команду.

ERROR: could not extend file «base/16398/1080815.75»: No space left on device
ПОДСКАЗКА: Check free disk space.

ERROR: No space left on device

Повторно запускаем очистку регистра сведений «Б24_К_Логирование» через интерфейс 1С:Предприятия. В этот раз операция завершается без ошибок.

4. Сжатие базы PostgreSQL

Рекомендуемые операции обслуживания ИБ — команды сжатия (VACUUM) и реиндексация (REINDEX).

Необходимо учесть, что их выполнение может занять продолжительное время, т. к. зависит от размера базы и производительности сервера.

В консоли psql:

\c UNF
vacuum full verbose;
Выполнение команды VACUUM

Следующим шагом запускаем переиндексацию в консольном режиме (рекомендуется):

cd "C:\Program Files\PostgreSQL 1C\15\bin"
reindexdb.exe -d UNF -U postgres

Смотрим объем ИБ UNF на диске — 23,1 Гб. Мама мия — минус 84,7%. Таким образом, в базе остались основные таблицы, а файлы — в отдельном томе.

✅ Что может помочь в задаче сжатия:

  • • выгрузка/загрузка ИБ;
  • • (опционально) поиск и очистка объектов хранения, данные которых не требуются, а также и сокращение/отключение избыточного логирования;
  • • периодическое выполнение операций обслуживания для баз PostgreSQL (vacuum, reindex) по расписанию.

__________
Что-то не так с 1С или нужна настройка?
Оставьте заявку или позвоните +7-911-500-10-11 — разберёмся и поможем.

Отправить
Поделиться
Запинить