Postgres: Як я можу побачити, що всі оператори SQL виконуються сервером баз даних?


23

Я переглядаю кожне твердження SQL, яке додаток робить проти бази даних, з міркувань продуктивності. Чи є простий спосіб реєстрації всіх операторів, які виконуються сервером баз даних PostgreSQL? Спасибі.


У цьому наступному поясненні пояснюється, як побачити поточний запит запуску tutorialdba.com/2016/11/pgstatactivity-view-explanation-in.html
nijam

Відповіді:


27

Опція конфігурації, яку ви шукаєте, це log_statement = "all"(якщо ви просто хочете заяви) або log_min_statement_duration = <some number>якщо ви просто після "повільних" запитів (для деякого значення "повільного"). Дивіться http://www.postgresql.org/docs/current/static/runtime-config-logging.html для отримання більш детальної інформації про конфігурацію журналу.


1
Реєстрація всіх заяв є вбивцею продуктивності (як зазначено в офіційних документах). Однак у 8.4 є хороша особливість отримання explain analyzeповільного запиту на краватці, яку він виконував, ви можете почати тестувати це, оскільки 8.4 ще не випущений, але це хороший варіант знати, що трапляється на момент виконання , якщо висновок аналізу пояснити нормально, ви, мабуть, стикаєтеся з проблемами з межами вводу / виводу або процесора, але принаймні ви будете знати, що це не сам запит
serverhorror

5
Мені дуже подобається варіант log_statement = 'mod'. Він показує лише створення, оновлення та видалення та пропуск усіх вибраних операторів. Чудово, якщо ви намагаєтеся розібратися, який код обробляє якесь поле.
Дон Кіркбі

5

auto_explainМодуль є дуже корисним для цього. Він не лише записуватиме виписки, але записуватиме їх плани виконання і навіть може вести журнал операцій, що виконуються в межах PL / PgSQL-функцій. Показник ефективності є досить низьким, якщо ви не ввімкнете аналіз, і в такому випадку ви несете досить великі витрати на час для всіх запитів.

Дивіться auto_explainв документації.


Зауважте, що "auto_explain" - це модуль, тому він не працює на базах даних AWS RDS Postgres :(
johntellsall

1
@johntellsall підтримує RDS auto_explain, він знаходиться у їхньому списку блаженних модулів. Дивіться документацію на docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Крейг Рінгер

3

Звичайно, ви можете виявити найповільніші запити самостійно, але я раджу вам скористатися pgFouine - аналізатор журналів PostgreSQL. Це простий в установці і дуже корисний.

Зразок звітів: тут і тут .


Я використовував pgFouine для проекту та визначив декілька місць, де індекс дуже допоможе речам.
Пол Томблін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.