0

最近、テーブルの 1 つの列の b ツリー インデックスに問題があります。インデックスを作成します:

CREATE INDEX t_client_contact_email on t_client_contakt (email);

すべて問題ありませんが、数日後、このインデックスを使用した検索が正しく機能しなくなりました。このインデックスを再構築 (DROP - CREATE) するたびに OK です。

これで何ができますか?Postgres 8.4 を使用しています。

4

1 に答える 1

3

ごく最近修正された古いバグに噛まれている可能性があります。

これを参照してください:

http://www.postgresql.org/docs/8.4/static/release-8-4-11.html

具体的には:

バキューム処理と同時に行われる挿入による btree インデックスの破損が修正されました。 (Tom Lane)

挿入によって引き起こされたインデックス ページの分割により、同時に実行されている VACUUM が、削除すべきインデックス エントリを削除できなくなることがあります。対応するテーブル行が削除された後、ダングリング インデックス エントリによってエラー (「ファイル内のブロック N を読み取れませんでした ...」など) が発生するか、さらに悪いことに、関係のない行が空になった場所に再挿入された後に、静かに間違ったクエリ結果が発生します。テーブルの場所。このバグはリリース 8.2 から存在していますが、発生頻度が非常に低いため、現在まで診断されていませんでした。データベースで発生したと疑う理由がある場合は、影響を受けたインデックスを再インデックス化すると問題が修正されます。

于 2012-06-25T15:31:36.460 に答える