高見 直輝
takam****@orega*****
2016年 2月 4日 (木) 12:02:22 JST
高見です。 > > CREATE INDEXの時点ではOIDを使っているように見えるのですが、どうなのでしょ > > うか? > > てっきり、XXXの値がrelfilenodeの値に切り替わったのが原因ではないかと思っ > > たのですが・・・。 > > CREATE INDEX直後はOIDもrelfilenodeも同じ値なんです。 あ、そうなんですね。気がつきませんでした。 > > CREATE INDEX時にOIDがセットされている場合、REINDEXをしていない(relfilenode > > の値に切り替わっていない)インデックスが消えてしまいませんか? > > REINDEXをしていないインデックスは絶対消えないようになってい > ます。 > > > 次回アップデート時に既存インデックスの再作成が必要かどうか教えて下さい。 > > 必要ありません。 > VACUUM/ANALYZE後のロジックが間違っているだけなので、アップデー > トすれば直るのです。 了解しました。 > >> つまり、電源断をしなくても以下で再現します。 > >> > >> CREATE INDEX ...; > >> REINDEX INDEX ...; > >> ANALYZE; > >> SELECT ...; > > > > 当方の環境ではREINDEXの前にpgrnファイルを削除しないと再現しないようなの > > ですが、理由は分かりますでしょうか? > > たぶん、SELECTのときにシーケンシャルサーチになっているんだと > 思います。最後のSELECTをINSERTに変えるとエラーメッセージがで > ると思います。 すいません。再現しました。 ANALYZEしてから全テーブルのインデックス情報が削除されるまでの期間が、ファ イルの有無によって増加する模様。 インデックス(テーブル)の数が多いので、既存ファイルのチェックや削除など に時間がかかっているのだと思われます。 > > ファイル削除をやっていない環境であればアップデート時にインデックス再作成 > > が不要になる、となってくれると色々と助かるのですが・・・。 > > はい、インデックス再作成は不要です。 助かります。 ----------------------------- 高見 直輝 <takam****@orega*****> 株式会社オレガ TEL:03-3267-0150 FAX:03-3267-0180