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

相关推荐
CodexDave7 小时前
PostgreSQL 明明有索引却选了 Nested Loop:从行数误判修正执行计划
数据库·postgresql·执行计划·扩展统计·nestedloop
czhaii9 小时前
STC ai助手单片机工程项目创建实例
数据库·mongodb
山峰哥9 小时前
数据库性能救星:Explain执行计划深度拆解
服务器·开发语言·数据库·sql·启发式算法
oradh10 小时前
Oracle 11g rac IP地址修改(public ip、vip、scan ip、priviate ip)
数据库·tcp/ip·oracle·rac ip地址修改
YOU OU10 小时前
Redis哨兵 & 集群
数据库·redis·sentinel
小罗水10 小时前
第8章 文档解析与文本切片
数据库·spring·spring cloud·微服务
瞬间&永恒~11 小时前
【MySQL】 主从复制多拓扑搭建实验
运维·数据库·mysql·云原生
han_hanker11 小时前
sql语法 DECODE, CASE ... WHEN
数据库·sql·oracle
井川廊咏11 小时前
vi 删除指定范围的行,不用再反复按 dd
数据库·mysql
z落落12 小时前
StudentInfo表 分页、增删改 存储过程+C# WinForm 存储过程实现分页和增删改查
数据库·sql·mysql