В вопросах производительности разговор с оракловой поддержкой обычно начинался с просьбы прислать отчет автоматического репозитория нагрузки (AWR). Встроенного в PostgreSQL аналога AWR нет. Также существует полезное расширение pg_profile, позволяющее генерировать html отчеты по нагрузке PostgreSQL в привычном виде.
Подробная документация здесь
Начальные условия
Debian 9 (x86-64) в минимальной инсталляции + PostgreSQL 14.5.1 Выполнение всех команд от пользователя root или sudo
Установка необходимых расширений
Код: Выделить всё
postgres=# CREATE EXTENSION dblink;
postgres=# CREATE EXTENSION pg_stat_statements;Установка рекомендованных значений параметров файла postgresql.conf
track_activities = on
track_counts = on
track_io_timing = on
track_wal_io_timing = on # Since Postgres 14
track_functions = all
Установка pg_profile
Код: Выделить всё
tar xzf pg_profile-<version>.tar.gz --directory $(pg_config --sharedir)/extensionКод: Выделить всё
postgres=# CREATE SCHEMA profile;
postgres=# CREATE EXTENSION pg_profile SCHEMA profile;Код: Выделить всё
0 * * * * /usr/bin/psql "dbname=postgres user=postgres password=* port=5432" -c "SELECT profile.take_sample();"Код: Выделить всё
psql -Aqtc "SELECT profile.get_report('alpha',4,5)" -o report_alpha_4_5.html
psql -Aqtc "SELECT profile.get_diffreport('alpha',4,5,6,7)" -o dreport_alpha_5_7.html