Релиз Postgres Pro Enterprise для 1С: оптимизации для нагрузок «1С», временные таблицы на Standby и отказоустойчивость

от автора

Компания Postgres Professional объявляет о выходе обновления СУБД Postgres Pro Enterprise для 1С 18.4.1. Основной фокус обновлений направлен на оптимизацию производительности систем под управлением платформы «1С», расширение возможностей встроенных средств высокой доступности и отказоустойчивасти, гибкую маршрутизацию клиентских соединений и повышение эффективности работы планировщика запросов.

Пакет оптимизаций для экосистемы «1С»

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

  • Горизонтальное масштабирование читающей нагрузки. Реализована поддержка операций чтения и записи для временных таблиц, последовательностей и представлений на ведомом сервере (Hot Standby). Функциональность активируется параметром enable_standby_temp_tables совместно с enable_temp_memory_catalog и hot_standby. Это позволяет переносить построение сложных отчётов непосредственно на standby-сервер, снижая нагрузку на основной узел и рациональнее используя аппаратные ресурсы.

  • Join Predicate Pushdown. Новый параметр конфигурации enable_join_predicate_pushdown позволяет планировщику запросов проталкивать условия соединения внешнего запроса внутрь вложенных подзапросов. Это помогает планировщику выбирать более эффективные пути соединения и ускорять выполнение сложных запросов.

  • Оптимизация оценки селективности для больших списков MCV. Ранее при работе с большими списками наиболее частых значений (Most Common Values) алгоритм оценки селективности соединений имел квадратичную вычислительную сложность. Это могло вызывать падение производительности при высоких целевых показателях статистики столбцов. В версии 18.4.1 данный механизм был оптимизирован, что положительно сказывается на времени планирования в базах «1С».

  • Оценка селективности верхнего предела. Планировщик получил оптимизированный механизм оценки селективности при использовании параметра planner_upper_limit_estimation, что ускоряет выполнение операций с ограниченной выборкой — в частности, регламентных операций вроде закрытия периода в «1С».

Отказоустойчивость и балансировка нагрузки

Встроенное решение для создания отказоустойчивых кластеров BiHA (Built-in High Availability) обновлено до версии 1.8.

  • Стабилизация GDBiHA. Функциональность многоуровневого географического распределения и катастрофоустойчивости переведена из статуса экспериментальной в стабильную.

  • Снятие ограничения на имя суперпользователя. В утилите bihactl добавлена опция —cluster-init-username. Ранее инициализация была возможна только под стандартным системным пользователем postgres. Теперь администраторы могут задать альтернативное имя суперпользователя как при создании кластера с нуля, так и при конвертации существующего узла.

  • Безопасность сервисных каналов. Введены параметры biha.ssl_cert_path и biha.ssl_key_path для явного указания путей к SSL-сертификатам и приватным ключам, обеспечивающим защиту внутренних соединений между узлами кластера.

Расширение Proxima, обеспечивающее для платформы «1С» единую точку подключения к отказоустойчивому кластеру СУБД и автоматическое перенаправление запросов при смене ролей узлов, получило важные архитектурные улучшения.

  • Единая точка входа без дополнительной инфраструктуры. Процесс рефери BiHA с Proxima может быть установлен непосредственно на сервер приложений «1С» — в этом случае строка подключения навсегда остаётся неизменной (localhost), а Proxima самостоятельно следит за составом кластера и при смене лидера прозрачно перенаправляет соединения. В отличие от схемы с виртуальным IP, такой подход не создаёт дополнительной точки отказа и не требует лицензионных затрат.

  • Адаптивная балансировка. Реализован новый алгоритм балансировки adaptive, распределяющий запросы на основе комплексной оценки утилизации CPU, RAM и дискового ввода-вывода (для точечной настройки добавлены параметры proxima.load_balancer_cpu_weight, proxima.load_balancer_ram_weight и proxima.load_balancer_io_weight). Также добавлены специализированные алгоритмы adaptive-ram и adaptive-io.

  • Защита и аутентификация. Добавлена поддержка аутентификации по сертификатам (SSL CA). Реализована возможность проксирования проверки подлинности пользователей на первичный узел кластера (proxima.auth_policy), что по умолчанию активировано для узлов-арбитров BiHA.

  • Мультиадресный режим. Теперь Proxima может принимать входящие соединения на нескольких сетевых адресах одновременно. Поддерживаются IPv4, IPv6 и пути к Unix-сокетам.

Новые модули, расширения и утилиты

  • Метод доступа pgpro_iheap. Новое расширение предоставляет метод доступа iheap, призванный ускорить последовательное сканирование за счет интеграции встроенных механизмов обычного heap и разреженного индекса BRIN.

  • Автоматическая статистика для временных таблиц pgpro_temp_stats. Расширение pgpro_temp_stats автоматически создаёт расширенную статистику (ndistinct, функциональные зависимости, MCV) для временных таблиц прямо во время планирования запроса — по аналогии с механизмом AUTO_CREATE_STATISTICS в MS SQL Server. При первом обращении расширение извлекает столбцы и выражения из условий WHERE/JOIN, неявно вызывает CREATE STATISTICS и целевой ANALYZE только нужных столбцов. Планировщик больше не действует «вслепую»: последующие запросы получают корректные оценки кардинальности. Для пользователей «1С», чья логика целиком построена на временных таблицах, это устраняет одну из главных причин деградации производительности при миграции с MS SQL Server.

  • Контроль целостности с помощью pgpro_validate. Утилита предназначена для быстрой верификации физической целостности данных на уровне инстанса СУБД.

Дополнительные улучшения СУБД

  • Кеширование дескрипторов каталогов. Для уменьшения использования ресурсов CPU при планировании SQL-запросов реализовано кеширование файловых дескрипторов директорий внутри PGDATA.

  • Логирование типов параметров. Параметр log_parameter_types позволяет выводить в логи СУБД значения связанных параметров подготовленных выражений с префиксом их типа данных (например, [integer] $1 = ’42’).

  • Поведение при самосравнении. Планировщик теперь преобразует конструкции вида col = col в эквивалентную и более быструю проверку IS NOT NULL, если такое преобразование является семантически безопасным.

  • Ограничение hba_file в сертифицированной версии. В редакции Postgres Pro Enterprise Certified ограничена возможность изменения конфигурационного параметра hba_file «на лету» для защиты от несанкционированного изменения сетевого доступа.

Подробности обновления и способы установки можно найти в документации:

https://postgrespro.ru/docs/enterprise/18/index

ссылка на оригинал статьи https://habr.com/ru/articles/1056088/