[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 メーリングリストの案内