2

Я новичок в PostgreSQL. Пожалуйста, помогите мне найти это.Получить информацию о выполненном запросе в Postgresql

У меня есть таблица

company (
    id bigint primary key, 
    name text, 
    age integer, 
    address character(50), 
    salary real, 
    gender character(1)) 

тогда я сделать простой запрос:

select * from company where address='texas' and salary=10000 
select * from company where address='texas' and salary=15000 
select * from company where address='houston' and salary=10000 
select * from company where address='texas' and salary=85000 
select * from company where address='norway' and salary=100 

, как я могу получить подробную информацию о выполненном запросе, например, запроса, переменная ввода WHERE и общего исполняющего время. поэтому я могу сравнить каждый выполненный запрос, чтобы узнать, какой тип ввода работает долго.

Спасибо,

+0

Это не так легко установить его, но смотреть на модуль [pg_stat_statements] (https://www.postgresql.org/docs/current/static/pgstatstatements.html). – Abelisto

+0

спасибо @Abelisto, я использовал pg_stat_statement, чтобы сделать это, но мой наставник сказал без этого модуля. может быть, есть другой способ? Спасибо –

+0

Хорошо, попробуйте использовать [Отчеты об ошибках и протоколирование] (https://www.postgresql.org/docs/current/static/runtime-config-logging.html), посмотрите параметры 'log_statement' (Sets тип регистрируемых операторов) 'log_duration' (регистрирует продолжительность каждого заполненного оператора SQL),' log_min_duration_statement' (устанавливает минимальное время выполнения, над которым будут записываться операторы) и т. д. – Abelisto

ответ

1

Как я прочитал вопрос это звучит, как вы ищете план выполнения запроса и детали исполнения, правильно?

Если это так, вы хотите посмотреть на документы [1] для EXPLAIN и ознакомиться с ними.

explain без параметров предоставляет план запроса. На самом деле этот запрос не выполняется.

explain analyze дает ожидается против реальных тайминги (обратите внимание, это не detoast выходных данных, но это, как правило, не является проблемой. Это фактически выполняет запрос, как это будет в любое время у вас есть проанализировать ваши варианты.

explain analyze verbose дает дополнительную информацию.

Иногда задания вы хотите буфер статистики может быть полезным, но это редкий уголок случай. Начнем с тех, три.

отметить Также вы можете настроить PostgreSQL для регистрации медленных запросов, и это будет включать в себя параметры или вход. как правило, важны для решения этих проблем.

[1] https://www.postgresql.org/docs/9.3/static/sql-explain.html

+0

Спасибо большое .. Я прочитал об EXPLAIN. используя EXPLAIN, я могу увидеть планирование по моему запросу. Но это не моя проблема. Прошу прощения, если мой вопрос непонятен. после того, как я сделаю простой выбор, как сообщение выше, как я получаю детали каждой транзакции select, такой как запрос, время транзакции без использования pg_stat_statement ?? спасибо - –

+0

В PostgreSQL нет реального способа сделать это. Это звучит так, как будто у вас проблемы с медленными запросами. Лучший вариант - регистрировать медленные запросы выше определенного порога, а затем использовать объяснение, чтобы выяснить, почему они медленны. Я предполагаю, что вы можете отслеживать время на стороне клиента и делать некоторые записи на стороне клиента. –

+0

хорошо, благодарю вас за ваше объяснение. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^