[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 メーリングリストの案内