left link changed unexpectedly in block xxxx of index ““index_xxxxx“

文章目录

环境

系统平台:N/A

版本:10.3

症状

对表执行vaccum操作时,提示索引相关的错误,信息如下:

复制代码
testdb=# vacuum  testtable01;
ERROR:  left link changed unexpectedly in block 73592 of index "index_col01"
testdb=# vacuum  freeze testtable01;
ERROR:  left link changed unexpectedly in block 73592 of index "index_col01"

问题原因

index_col01索引文件损坏,导致在73592 块上获取到的索引页的链表结构被破坏了,需要重建索引修复。

解决方案

重建索引解决。命令如下:

方式一:不开并行重建索

sql 复制代码
testdb=# reindex index index_col01;

注:PostgreSQL 10.3不支持并行重建索引,这样重建索引会锁表会阻塞DML操作,建议在业务空闲期间操作。

方式二:先建立新索引,再删掉老的索引

sql 复制代码
testdb=# create index CONCURRENTLY index_col02 on testtable01(col1);
CREATE INDEX
testdb=# drop index index_col01;
DROP INDEX

注:因为postgresql10.3 不能并发的重建旧的索引,可以通过先建后删的方法在postgresql10.3下可以避免reindex阻塞其他DML。

报错编码

left link changed unexpectedly in block of index

相关推荐
Python私教9 小时前
从表格到管理系统:别先写页面,先补齐权限、流程和审计
数据库·后端·架构
陈皮波比茶9 小时前
Redis学习
数据库·redis·学习
—Miss. Z—9 小时前
备份与恢复
数据库·oracle
ltl10 小时前
RocksDB Leveled Compaction:层级不变式与 CompactionPicker
数据库
ltl10 小时前
DuckDB 向量化与 Morsel-Driven Pipeline
数据库
NJCloud10 小时前
TiDB 集群部署与 MySQL 兼容性适配实战
linux·运维·数据库·mysql·tidb
喜欢打篮球的普通人10 小时前
LLVM Backend Lowering 从入门到实战:把 IR 变成机器码的完整链路
android·java·数据库
SomeOtherTime12 小时前
Postgresql触发器实现对表的日志审计
数据库·postgresql
这个DBA有点耶13 小时前
Oracle 迁移金仓兼容性评估指南:5 大维度深度拆解
数据库·oracle·架构