[pgsql-jp: 26289] Re: Status情報解析方法について
sugita @ sra.co.jp
sugita @ sra.co.jp
2002年 6月 5日 (水) 18:28:03 JST
杉田です。
From: okayasuk @ nttdata.co.jp
Subject: [pgsql-jp: 26288] Status情報解析方法について
Date: Wed, 5 Jun 2002 13:18:35 +0900
;;; ・やりたいこと
;;; SQLの動作情報(処理時間の詳細)を取得したい。
詳細というのが具体的に分からないので、殆ど外していそうです。
;;; 具体的には、Statementを使用した場合とPreparedStatement
;;; を使用した場合のパフォーマンスの比較をするのが目的です。
ディスク I/O のパフォーマンスは別として、実行時間については、current から
psql の \timing コマンドのコードを 7.2 に持って来るか explain analyze を使うと
いうのも手軽です。ただし、後者は単に実行するよりも時間がかかってしまうので、
\timing の方がよいと考えています。
=# select version();
version
---------------------------------------------------------------------
PostgreSQL 7.2.1 on i386-unknown-freebsd4.5, compiled by GCC 2.95.3
(1 row)
=# \timing
Timing is on.
=# select count(*) from class1 where i > 10000 and i < 15000;
count
-------
4999
(1 row)
Total time: 0.047s
=# explain analyze select count(*) from class1 where i > 10000 and i < 15000;
NOTICE: QUERY PLAN:
Aggregate (cost=101.93..101.93 rows=1 width=0) (actual time=81.71..81.71 rows=1 loops=1)
-> Index Scan using class1_pkey on class1 (cost=0.00..88.35 rows=5435 width=0) (actual time=0.06..55.60 rows=4999 loops=1)
Total runtime: 81.87 msec
EXPLAIN
Total time: 0.084s
=#
;;; ・設定
;;; postgres.conf にて以下を設定。
;;; show_parser_stats = true
;;; show_planner_stats = true
;;; show_executor_stats = true
;;; debug_print_query = true
;;;
;;; ・結果解析方法
;;; ログには以下の出力が出るのですが、
;;;
;;; (1)は処理時間なのでしょうか?
;;; (2)は何ですか?CPU時間?
;;; (3)Shared blocksはその名の通り共有バッファなのだと思いますが、
以下のコードで表示されている内容が上記に該当しています。
src/backend/tcop/postgres.c の ShowUsage() での getrusage()
src/backend/storage/buffer/bufmgr.c の ShowBufferUsage()
;;; Local blocks とは何でしょうか?
非共有の malloc() したバッファです。
;;; Direct blocks は多分ディスクI/Oなのでしょう。
コード上からは、使われていませんでした。
ディスク I/O については、以下のビューがあり、PostgreSQL 7.2.1
Administrator's Guide の 10.2. Statistics Collector に説明があります。
pg_stat_activity バックエンドごとの稼働情報。
pg_stat_all_indexes 全インデックスのアクセス統計情報。
pg_stat_all_tables 全テーブルのアクセス統計情報。
pg_stat_database データベースごとのアクセス統計情報。
pg_stat_sys_indexes システムインデックスのアクセス統計情報。
pg_stat_sys_tables システムテーブルのアクセス統計情報。
pg_stat_user_indexes ユーザインデックスのアクセス統計情報。
pg_stat_user_tables ユーザテーブルのアクセス統計情報。
pg_statio_all_indexes 全インデックスのI/O統計情報。
pg_statio_all_sequences 全シーケンスのI/O統計情報。
pg_statio_all_tables 全テーブルのI/O統計情報。
pg_statio_sys_indexes システムテーブルのI/O統計情報。
pg_statio_sys_sequences システムシーケンスのI/O統計情報。
pg_statio_sys_tables システムテーブルのI/O統計情報。
pg_statio_user_indexes ユーザインデックスのI/O統計情報。
pg_statio_user_sequences ユーザシーケンスのI/O統計情報。
pg_statio_user_tables ユーザテーブルのI/O統計情報。
Kenji Sugita
sugita @ sra.co.jp
pgsql-jp メーリングリストの案内