49.5. 崩溃恢复

通常,重放 WAL 日志就足以再数据库崩溃之后恢复 GiST 索引的完整性。 不过,还存在一些边角的情况,这些时候索引状态无法完整地重建。 这时候索引从作用上仍然是正确的,但是可能会导致一些性能的降低。 在发生这种情况的时候,索引可以通过 VACUUM 其所有表来修复, 或者通过使用 REINDEX 重建索引来修复。在某些情况下,单纯的 VACUUM 是不够的,需要 VACUUM FULL 或者 REINDEX。 是否需要这些步骤,可以从崩溃恢复的日志信息中得到提示:

LOG:  index NNN/NNN/NNN needs VACUUM or REINDEX to finish crash recovery

或者在索引插入的时候出现下面的日志信息:

LOG:  index "FOO" needs VACUUM or REINDEX to finish crash recovery

如果一个单纯的 VACUUM 觉得自己无法完整地恢复,它会返回一个提示:

NOTICE:  index "FOO" needs VACUUM FULL or REINDEX to finish crash recovery