[pgsql-jp: 28403] updateの性能を向上
fukudami @ ntes.nec.co.jp
fukudami @ ntes.nec.co.jp
2002年 12月 20日 (金) 20:34:51 JST
はじめまして。福田と申します。
Solaris8 + PostgreSQL 7.2.1環境において、DBの更新性能を向上
したいのですが、どなたかお知恵をお借りできないでしょうか?
勝手ながら、少々いそいでおります。
現状、普通にupdateを使用してDBを更新しているのですが、どうも
望んだ性能が出ません。現在約40万件レコード登録してあるテーブル
に対し、下記の様な方式でupdateを実行すると、約15分程度かかって
しまいます。更新対象のレコード数はそれほど多くは無い(と言っても
ばらつきはありますが)ので、可能ならば2〜3分程度の性能にしたいです。
更新対象のレコード数は、一度に500〜3000程度です。
psql -h $hostname -d $database_name -c \
"update $daily_db \
set status='$condition_name' \
where $tmp_db.ip_address = \
$daily_pm_db_stat.ip_address and \
$tmp_db.port_number = \
$daily_pm_db_stat.port_number"
(注) $daily_dbについては、は下記のprofile_dbスキーマ定義を参照してください。
最も最適な更新方法はあるのでしょうか?それとも、これは妥当な
性能なのでしょうか?
開発環境は、
Solaris8
PostgreSQL 7.2.1
gcc-2.95.3-sol8
shからpsqlを直接使用しています。
スキーマ定義は、
CREATE TABLE "profile_db" (
"ip_address" text NOT NULL,
"port_number" integer NOT NULL,
"name" text ,
"counter" integer not null default 0,
"status" text,
primary key(ip_address,port_number)
);
よろしくお願い致します。
pgsql-jp メーリングリストの案内