[pgsql-jp: 32172] Re: インデックスの再構築について

TANIDA Yutaka tanida @ sra.co.jp
2004年 2月 4日 (水) 11:32:01 JST


谷田です。

On Wed, 4 Feb 2004 11:08:01 +0900
"Ebihara, Yuichiro" <Yuichiro.Ebihara @ jp.sony.com> wrote:

> インデックスの定期的な再構築が必要になるケースがありますが、その
> やり方に関する質問です。
> 
> REINDEXコマンドは元表に対してACCESS EXCLUSIVEを獲得します。
> このことはインデックスの再構築中は、該当テーブルへの全てのアクセス
> (SELECT含む)がブロックされることを意味するはずです。
> 
> インデックス再構築の別の方法として、DROP & CREATEも考えられる
> と思います。
> 
> CREATE INDEXはテーブルに対しSHAREモードでロックを獲得します。
> (DROP INDEXの獲得するロックモードは定かではありませんが、どうせ
> ごく短い時間だろうから問題にしない)
> 
> ということは、インデックスの作成中は更新(INSERT,UPDATE,DELETE)
> はブロックされるものの、参照(SELECT)は可能なはずです。
> 
> そのような保守作業は、DBアクセスを禁止した上で行うのが基本ですが、
> それにしてもREINDEXコマンドの有用性を理解できません。

primary keyが暗黙的に利用するunique indexのように、その特性上絶対にdrop
indexできないindexが存在しますから、そういう場合にreindexは不可欠です。
システムテーブルのindexなどは、その最たる物です。

そういうケースを除くなら、おっしゃるとおりdrop/createしたほうが有効なケー
スは存在するかもしれません。

-- 
TANIDA Yutaka <tanida @ sra.co.jp>




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