Влияние log_duration на производительность PostgreSQL - PullRequest
0 голосов
/ 05 февраля 2020

Все,

Я пытаюсь понять влияние PostgreSQL настройки сервера log_duration. Может ли это вызвать какие-либо проблемы с производительностью, установив его на ON? Я пытался настроить сервер слияния с Postgres backend. Когда для этого значения установлено значение ON, ответ службы является медленным, тогда как когда я устанавливаю его в значение OFF, оно быстро.

log_min_duration_statement имеет значение -1 => Тексты запросов не должны регистрироваться.

Запросы:

  1. Почему он работает медленно, если для него установлено значение ON
  2. Logging => регистрируется ли он в каком-либо файле журнала? Если да, где найти то же самое на сервере
  3. Существует еще одна функция pg_stat_statements.track, которую можно установить в TOP, ALL. Почему установка этого не дает проблемы с производительностью. Это также отслеживание запросов. Но он дает total_time и звонки, но не индивидуальные.

Может кто-нибудь помочь мне понять влияние.

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

обратитесь к этому, дайте мне знать, если вам нужна дополнительная информация:

длительность журнала

Это позволяет регистрировать выборку операторов без чрезмерного трафика журнала c (что может повлиять на производительность). Это может быть полезно при анализе рабочих нагрузок с большим количеством коротких запросов.

Выборка настраивается с использованием двух новых параметров GU C:

  • log_min_duration_sample - минимальная требуемая продолжительность оператора

  • log_statement_sample_rate - частота выборки (0,0 - 1,0)

Для выборки рассматриваются только операторы с длительностью, превышающей log_min_duration_sample. Чтобы включить выборку, оба этих GUC должны быть установлены правильно.

Существующий log_min_duration_statement GU C имеет более высокий приоритет, то есть операторы с длительностью, превышающей log_min_duration_statement, будут всегда регистрироваться независимо от того, как настроена выборка. Это означает, что только конфигурации

log_min_duration_sample

на самом деле производят выборку операторов вместо записи всего.

0 голосов
/ 05 февраля 2020

Лучший способ узнать это - измерить его.

Для простых запросов только для выбора, таких как pgbench -S, влияние достаточно велико. Я получаю 22000 выборок в секунду с выключенным и 13000 с включенным. Для более сложных запросов выбора или для DML влияние в процентах будет намного меньше.

Форматирование и печать сообщений журнала, а IP C для сборщика журнала занимает время. pg_stat_statements не делает этого для каждого запроса, он просто увеличивает некоторые счетчики.

Конечно, log_duration регистрирует файл журнала (или канал), иначе не было бы никакого смысла включать его. Расположение легко настраивается, посмотрите в postgresql .conf такие вещи, как log_destination, log_directory и log_filename. (Но если вы не знаете, где найти журналы, зачем вам вообще включать эту регистрацию?)

...