[pgsql-jp: 36599] dbmirror 内の delete に非常に時間がかかる
t-sasaki @ ep.jp.nec.com
t-sasaki @ ep.jp.nec.com
2006年 1月 5日 (木) 18:24:44 JST
はじめまして。佐々木と申します。
postgresql 7.4.8 の環境で dbmirror を用いてレプリケートを
行っていますが、dbmirror の中で行っている delete 文で非常に
時間がかかっており、その原因調査方法などご教授頂けますでしょうか。
postgresql.log には下記が出力され、それから13分かかっている
ことが分かります。
… duration: 796883.108 ms statement: DELETE FROM "Pending" WHERE "XID"=14576884 AND (SELECT COUNT(*) FROM "MirroredTransaction" WHERE "XID"=14576884)=(SELECT COUNT(*) FROM "MirrorHost")
同一スペックの別サーバにて同じようなのデータを作成し、同じような
delete 文を実行したところ、10秒程度で完了しました。
そこで、この13分も時間がかかっている環境がおかしいと思うのですが、
何が原因なのかを確認する方法などご教授下さい。
# dbmirror というより、PostgreSQL 自身のどこかがおかしいのでは
ないかと思っています。
因みに、関連する表の定義, 件数などは下記になります。
削除される前に "Pending" テーブルの "XID" 14576884 の件数を
確認したところ、10,000件程度でした。"Pending" テーブル内の
全て件数は約150,000件程度です。
# \d "Pending"
Table "public.Pending"
Column | Type | Modifiers
-----------+-------------------+--------------------------------------------------------------
SeqId | integer | not null default nextval('public."Pending_SeqId_seq"'::text)
TableName | character varying | not null
Op | character(1) |
XID | integer | not null
Indexes:
"Pending_pkey" primary key, btree ("SeqId")
"Pending_XID_Index" btree ("XID")
また、外部キーが設定してある関連テーブルは下記であり、こちらの
件数も "Pending" テーブルと同じ約150,000件です。
# \d "PendingData"
Table "public.PendingData"
Column | Type | Modifiers
--------+-------------------+-----------
SeqId | integer | not null
IsKey | boolean | not null
Data | character varying |
Indexes:
"PendingData_pkey" primary key, btree ("SeqId", "IsKey")
Foreign-key constraints:
"$1" FOREIGN KEY ("SeqId") REFERENCES "Pending"("SeqId") ON UPDATE CASCADE ON DELETE CASCADE
--
Sasaki Takahiko <sasaki-s15 @ mvj.biglobe.ne.jp>
pgsql-jp メーリングリストの案内