amcheck报告以下错误:
select bt_index_parent_check(34465);
ERROR: item order invariant violated for index "admin_access_rights_pkey"
DETAIL: Lower index tid=(282,71) (points to heap tid=(201,46)) higher index tid=(282,72) (points to heap tid=(197,38)) page lsn=396C/DDF2FD00
我该如何修复这个问题?
文档表明这REINDEX
可能没有帮助。
REINDEX 可能无法有效修复损坏。
此类错误可能由以下原因造成:
PRIMARY KEY
kill -9
)检查重复
PRIMARY KEY
:如果发现重复的键,请删除:
在许多情况下,使用以下命令重建索引似乎就足够了
REINDEX
:对于损坏的索引,我更喜欢速度较慢但更安全的版本
REINDEX CONCURRENTLY
。在使用时,我发现了一些问题(希望现在已修复)REINDEX CONCURRENTLY
。另一个选项是使用
pg_repack
允许在后台重新打包表和重建索引。如果成功,索引将被移动以替换原始索引。这种方法可能会避免不必要的锁定。尽管重建大型表可能需要大量时间。pg_repack
可能正在针对整个数据库运行:-N
/--dry-run
仅打印重新打包的资源-j
/--jobs=4
并行作业数-x
/--only-indexes
仅重建索引-c
/--schema=public
仅限特定架构