[pgsql-jp: 29329] Re: パフォーマンス向上策

sugita @ sra.co.jp sugita @ sra.co.jp
2003年 3月 9日 (日) 16:30:54 JST


  杉田です。

From: tamagawa <tamagawa @ sts.co.jp>
Subject: [pgsql-jp: 29328] Re: パフォーマンス向上策
Date: Sun, 09 Mar 2003 15:39:13 +0900

;;; 1)の場合はほぼデータベースエンジンの検索性能に
;;; 依存すると思いますし、PostgreSQLもOracleもそれほど
;;; 変わらないように思います。検索の内容が単純(副問い合わせ
;;; を使わないですむようなケース)ならMySQLが圧倒的に速いで
;;; しょうね。

  1 年位前に試したときには、8〜10 倍速く、INSERT も速かったです。

;;; 3)の場合は、Oracleで言うところのprepareが効いてくるケース
;;; です。一般にRDBでは、問い合わせの内容から実行計画を立てる
;;; (PostgreSQLではexplain planで出せるやつですね)訳ですが、
;;; この作業がかなり重たいのです。で、Oracleの場合はprepareし
;;; ておけば、同じような問い合わせの場合は前に使った計画を
;;; そのまま使ってくれます。PostgreSQL+PHPにはこのPrepareの
;;; 機能がないので、問い合わせの実行数そのものが多い場合には
;;; Oracleに比べて不利になるでしょうね。

  PostgreSQL 7.3 からの PREPARE を試した一例です。

    PREPARE name_to_cast (text) AS
	SELECT t1.typname AS castsource,
	       t2.typname AS casttarget,
	       p.proname AS proname,
	       p.provolatile AS provolatile,
	       c.castcontext AS castcontext
	    FROM pg_type t1, pg_type t2, pg_cast c, pg_proc p
	    WHERE c.castsource = t1.oid
		  AND
		  c.casttarget = t2.oid
		  AND
		  c.castfunc = p.oid
		  AND
		  t1.typname = $1
	    ORDER BY 1, 2
	    ;

    CPU, メモリ, OS          通常     PREPARE  EXECUTE (msec)
    =======================  =======  =======  =======
    Pentium 800MHz, 384MB       16.1     18.5     4.38
    Red Hat Linux 7.3
    =======================  =======  =======  =======


Kenji Sugita                                      
Open Source Solution Division
Senior Manager                    
Software Research Associates, Inc.




pgsql-jp メーリングリストの案内