2013-07-15 3 views
15

MySQL 명령 줄 인터페이스에서 쿼리를 실행하면 결과를 인쇄 한 후 쿼리 실행 시간이 표시됩니다.Postgres 쿼리 실행 시간

Postgres 명령 줄 인터페이스 (psql)에서이를 알 수 없습니다. 로그에서 정보를 얻을 수 있도록 로깅을 구성하는 방법을 알고 있지만 MySQL처럼 표준 출력으로 인쇄하는 것이 더 편리 할 것입니다.

이 작업을 수행 할 수 있습니까?

+1

그것은 무의미 - 초콜릿 주전자 약으로 유용! – NickJ

+0

\ timing - 말하기 재미있어. – NickJ

+1

부부의 한 방법. 그러나 여전히 시도해 보았지만 효과가 없다면 질문에 설명하십시오. –

답변

42

"How can I time SQL-queries using psql?"으로 설명한대로 \timing을 사용하십시오.

the manual for psql도 참조하십시오. 클라이언트로 결과를 전송하는 시간을 포함하지 않는 서버 측 실행 시간을 원하는 경우에

, 당신은 SET client_min_messages = log 그래서 콘솔에서 로그 정보를 얻을 후, 구성에 log_min_duration_statement = 0을 설정할 수 있습니다.

EXPLAIN ANALYZE을 사용하여 자세한 실행 타이밍을 얻을 수도 있습니다. 새 버전에만있는 EXPLAIN (ANALYZE TRUE, TIMING FALSE)을 사용하고 집계 실행 시간 만 제공하는 세부적인 타이밍을 사용하지 않으면이 작업에 약간의 타이밍 오버 헤드가 있습니다.

PgBadger은 특히 the auto_explain module과 결합 할 때 로그 분석에서 유용한 집계 통계를 제공 할 수 있습니다.

마지막으로 실행중인 시스템에서 편리한 집계 정보를 수집 할 수있는 pg_stat_statements이 있습니다.

+1

및 \ timing을 사용하는 방법 – aName

+0

[manual] (https://www.postgresql.org/docs/current/static/app-psql.html) 또는 [google] (https://www.google .com.au/search? q = psql + timing). 아, 나는 당신도 [그냥 그것에 대해 질문을 게시했습니다] (http://stackoverflow.com/q/40593723/398670). 어쩌면 당신은 그걸 연결시켜야 했으니 까, 여기서 내 시간을 낭비하지 않아. –

5

나는 EXPLAIN ANALYSE

구문 당신에게 도움이 될 수 있다고 생각 :

EXPLAIN ANALYSE query; 

예;

EXPLAIN ANALYSE 
SELECT * 
FROM demotable; 

는 출력 : 많은 구글 안타는 "구글을 사용합니다"라고 답변 할 때

"Seq Scan on demotable (cost=0.00..12.10 rows=210 width=356) 
         (actual time=0.020..0.021 rows=8 loops=1)" 
"Planning time: 18.477 ms" 
"Execution time: 0.042 ms"