вторник, 29 октября 2019 г.

PostgreSQL 1C Медленная работа при переходе на клиент серверный режим работы

Решение проблемы с зависанием PostgreSQL
Типичные причины неоптимальной работы запросов и методы оптимизации
Платформа 8.0/8.1 → Медленная работа при переходе на клиент серверный режим работы
Управление Торговлей, ред. 11 → Подбор товаров в документы продажи
Платформа 8.3 → Проблема с запросом на postgres
Платформа 8.3 → Postgre очень низкая производительность!!!

enable_nestloop=off
constraint_exclusion = on
join_collapse_limit=1

Решение проблемы с зависанием PostgreSQL

При выполнения некоторых регламентных операций (Закрытие месяца, Расчет себестоимости и т.п), где используются сложные запросы с большим количеством соединений больших таблиц, возможно существенное увеличение времени выполнения операции. В основном, эти проблемы связаны с работой оптимизатора PostgreSQL и отсутствием актуальной статистики по таблицам, учавствующим в запросе.

Варианты решения проблемы:

    Увеличить количество записей, просматриваемых при сборе статистики по таблицам. Большие значения могут повысить время выполения команды ANALYZE, но улучшат построение плана запроса:
        Файл postgresql.conf - default_statistics_target = 1000 -10000.
    Отключение оптимизатору возможности использования NESTED LOOP при выборе плана выполнения запроса в конфигурации PostgreSQL:
        Файл postgresql.conf - enable_nestloop=off.
        Отрицательным эффектом этого способа является возможное замедление некоторых запросов, поскольку при их выполении будут использоваться другие, более затратные, методы соединения (HASH JOIN).
    Отключение оптимизатору возможности изменения порядка соединений таблиц в запросе:
        Файл postgresql.conf - join_collapse_limit=1.
        Следует использовать этот метод, если вы уверены в правильности порядка соединений таблиц в проблемном запросе.


Комментариев нет:

Отправить комментарий