Разберем классическую ситуацию, с которой регулярно сталкиваются администраторы и программисты. При обновлении типовой конфигурации, база данных размером около 20 гигабайт внезапно останавливает работу с ошибкой СУБД PostgreSQL: no space left on device. Свободных 7 гигабайт на диске оказывается недостаточно. Возникает закономерный вопрос руководства: существуют ли методы анализа и прогнозирования требуемого места для предстоящего обновления? Проанализируем эту проблему со всех сторон, выясним истинные причины "поедания" дискового пространства и рассмотрим эффективные решения.
Чтобы понять, как правильно рассчитывать ресурсы сервера, посмотрим на внутреннюю механику взаимодействия платформы 1С и СУБД PostgreSQL. Нехватка места редко связана с добавлением самих новых данных (кода или форм), чаще всего дисковое пространство съедают служебные и временные операции.
max_wal_size, допускают хранение большого объема логов между контрольными точками, место на диске испарится очень быстро. Особенно опасен включенный параметр archive_mode: если процесс-архиватор не успевает переносить логи в резервное хранилище, они будут бесконечно накапливаться в рабочем каталоге базы.maintenance_work_mem) не хватает, СУБД начинает сбрасывать промежуточные данные на диск во временные файлы, создавая дополнительную неконтролируемую нагрузку на дисковую подсистему.Точно до мегабайта высчитать потребность в диске невозможно, так как алгоритмы платформы зависят от конкретного релиза. Однако мы можем составить надежную оценку пикового потребления. Рассмотрим по шагам, как провести такой предварительный анализ:
Config.max_wal_size) и добавьте резерв под временные файлы.Важно помнить: если модель восстановления базы данных не простая, а полная, требования к месту пропорционально возрастают. В критических ситуациях настоятельно рекомендуем временно отключать архивирование логов на период обновления конфигурации.
Разберем современный подход, который позволяет избежать проблем с нехваткой места. Начиная с версии платформы 8.3.11, разработчикам доступен механизм оптимизированной реструктуризации базы данных (V2). Проанализируем его преимущества.
В отличие от устаревшего подхода с полным копированием таблиц, новый алгоритм старается вносить изменения "по месту", используя нативные SQL-команды, такие как ALTER TABLE. Это позволяет не только ускорить процесс реструктуризации в несколько раз, но и свести к минимуму потребление резервного дискового пространства. Для того чтобы задействовать этот функционал, убедитесь, что на сервере 1С установлена Java, а затем активируйте режим через конфигурационный файл conf.cfg, добавив параметр UpdateDBCfg.
Если вы хотите контролировать процесс и понимать, в какой именно момент исчезает место, воспользуемся программными средствами самой платформы. Рассмотрим скрипт, который можно запускать в фоновом режиме или в виде отдельной обработки для мониторинга локальных логических дисков сервера под управлением Windows.
Для реализации этой задачи мы используем COM-объект Scripting.FileSystemObject, который обращается к файловой системе операционной системы. Разберем код подробно:
FSO = Новый COMОбъект("Scripting.FileSystemObject");
Для каждого ТекДиск Из FSO.Drives Цикл
Если ТекДиск.DriveType = 2 Тогда
СвободныйОбъем = Окр(FSO.GetDrive(ТекДиск.DriveLetter).FreeSpace / 1048576, 1);
Сообщить("Диск " + ТекДиск.DriveLetter + " свободно " + СвободныйОбъем + " Мб.");
КонецЕсли;
КонецЦикла;
Посмотрим на условие DriveType = 2. Оно гарантирует, что мы опрашиваем только жесткие диски, игнорируя съемные носители, сетевые диски и CD-ROM. Метод FreeSpace возвращает значение в байтах, поэтому мы делим его на 1048576 для конвертации в более удобные мегабайты.
Подведем итог. Экономия на дисковом пространстве для серверов баз данных — плохая практика. Размер свободного места должен как минимум в 2-3 раза превышать размер самой базы данных. Однако, применяя оптимизированную реструктуризацию, анализируя структуру метаданных перед обновлением и контролируя параметры СУБД, вы сможете проводить обновления безопасно и предсказуемо даже в условиях ограниченных ресурсов.