[pgsql-jp: 36604] Re: dbmirror 内の delete に非常に時間がかかる

t-sasaki @ ep.jp.nec.com t-sasaki @ ep.jp.nec.com
2006年 1月 10日 (火) 13:14:47 JST


佐々木です。

ご回答ありがとうございました。
また折り返しの質問になってしまいますが、

> ・ミラー元のテーブルがVACUUMされていなくて肥大化している。
> ・ディスク断片化が派手に進行している
1日に1回 FULL VACUUM を実施しており、1時間に1回 Concurrent VACUUM を
実行しているので、肥大化している可能性は低そうです。
また、同一条件で select をすると一瞬で結果が返ってきますので、
表の肥大化,断片化はあっても大きく影響を与えていないと考えています。

> ・インデックスが働かずシーケンシャルスキャンになっている。
対象の delete 文に関してはきちんと index を使ってくれていましたが、
外部キーが設定してある "PendingData" において、内部的に delete される
時に index がきちんと使われているかを確認することは可能でしょうか?
内部でどのように delete されるのか分かっていませんが、ここが怪しそうです。

> ・ミラー動作を邪魔する不届き者が存在している。
同時に大きなトランザクションが動いているということはありませんでした。
また、"Pending", "PendingData" 表に対して、delete 対象行に対して
別トランザクションから update や delete が走ってはいなさそうでした
(ps で出力されるコマンドに update や delete が他になかったことから)。

> さしあたりこの「遅いDELETE」が走っている瞬間の
> トランザクション状態をチェックしてみてはどうでしょうか。
すみません、どのように状態を確認すれば良いかご教授頂けますでしょうか。

以上




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