postgres中错误的工作b树索引

时间:2012-06-25 11:02:30

标签: sql postgresql indexing b-tree

最近,我在表中的一列上遇到了b树索引的问题。我创建索引:

CREATE INDEX t_client_contact_email on t_client_contakt (email);

一切都很好,但几天后,使用此索引进行搜索无法正常工作。重建此索引(DROP - CREATE),每次都可以。

我该怎么办?我正在使用Postgres 8.4。

1 个答案:

答案 0 :(得分:3)

你可能会被一个旧的错误所困扰,这个错误最近已得到修复。

见:

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

具体做法是:

修复与吸尘同时插入的btree索引损坏(Tom Lane)

由插入引起的索引页拆分有时会导致并发运行的VACUUM错过删除它应删除的索引条目。删除相应的表行后,悬空索引条目将导致错误(例如“无法读取文件中的块N ...”)或更糟糕的是,在现在免费重新插入不相关的行之后,默认错误的查询结果餐桌位置。这个错误自8.2版本以来一直存在,但很少发生,直到现在才被诊断出来。如果您有理由怀疑它已经发生在您的数据库中,重新索引受影响的索引将解决问题。