| |
it:postgresql:optimization [2021/08/06 06:55] – создано ura2404 | it:postgresql:optimization [2021/08/06 06:57] (текущий) – ura2404 |
---|
| |
Варианты решения проблемы: | Варианты решения проблемы: |
-увеличить количество записей, просматриваемых при сборе статистики по таблицам. Большие значения могут повысить время выполнения команды ANALYZE, но улучшат построение плана запроса: | *увеличить количество записей, просматриваемых при сборе статистики по таблицам. Большие значения могут повысить время выполнения команды ANALYZE, но улучшат построение плана запроса: |
<file json postgresql.conf> | <file json postgresql.conf> |
default_statistics_target = 1000 -10000. | default_statistics_target = 1000 -10000. |
</file> | </file> |
| |
-отключение оптимизатору возможности использования NESTED LOOP при выборе плана выполнения запроса в конфигурации PostgreSQL: | *отключение оптимизатору возможности использования NESTED LOOP при выборе плана выполнения запроса в конфигурации PostgreSQL: |
<file json postgresql.conf> | <file json postgresql.conf> |
enable_nestloop = off. | enable_nestloop = off. |
Отрицательным эффектом этого способа является возможное замедление некоторых запросов, поскольку при их выполении будут использоваться другие, более затратные, методы соединения (HASH JOIN). | Отрицательным эффектом этого способа является возможное замедление некоторых запросов, поскольку при их выполении будут использоваться другие, более затратные, методы соединения (HASH JOIN). |
| |
-отключение оптимизатору возможности изменения порядка соединений таблиц в запросе: | *отключение оптимизатору возможности изменения порядка соединений таблиц в запросе: |
<file json postgresql.conf> | <file json postgresql.conf> |
join_collapse_limit=1. | join_collapse_limit=1. |
Следует использовать этот метод, если вы уверены в правильности порядка соединений таблиц в проблемном запросе. | Следует использовать этот метод, если вы уверены в правильности порядка соединений таблиц в проблемном запросе. |
| |
-изменение параметров настройки оптимизатора: | *изменение параметров настройки оптимизатора: |
<file json postgresql.conf> | <file json postgresql.conf> |
seq_page_cost = 0.1 | seq_page_cost = 0.1 |
</file> | </file> |
| |
-использование версии PostgreSQL 9.1.2-1.1.C и выше, в которой реализован независимый от AUTOVACUUM сбор статистики, на основе информации об изменении данных в таблице. По умолчанию включен сбор статистики только для временных таблиц и во многих ситуациях этого достаточно. При возникновении проблем с производительностью выполнения регламентных операций, можно включить сбор статистики для всех или отдельных проблемных таблиц изменив значение параметра конфигурации PostgreSQL (файл postgresql.conf) online_analyze.table_type = "temporary" на online_analyze.table_type = "all". | *использование версии PostgreSQL 9.1.2-1.1.C и выше, в которой реализован независимый от AUTOVACUUM сбор статистики, на основе информации об изменении данных в таблице. По умолчанию включен сбор статистики только для временных таблиц и во многих ситуациях этого достаточно. При возникновении проблем с производительностью выполнения регламентных операций, можно включить сбор статистики для всех или отдельных проблемных таблиц изменив значение параметра конфигурации PostgreSQL (файл postgresql.conf) online_analyze.table_type = "temporary" на online_analyze.table_type = "all". |
| |
---- | ---- |
| |