keithyzk
(Keithyzk)
1
【 TiDB 使用环境】测试
【 TiDB 版本】v5.0.3
【遇到的问题:问题现象及影响】
起因是对一个大表(6亿)循环进行 update 修改某个字段值,反复执行了几次下图的 update 之后,遇到如下报错
执行 analyze table 结果如下
对包含该字段的索引执行 analyze table index 结果如下
admin check table 结果如下
表索引信息如下,标红处是包含 update 的 file_indexState 字段索引
多次重试未找到解决方案后,尝试重建其中一个索引
先 DROP INDEX ix_dms_file_indexState_lastSize ON dms_file; 之后新建索引,建索引花费了10个多小时
新建索引后,依然是同样的相关报错
请教一下,
这个问题是会在什么情况下出现呢?
需要怎么解决这个问题? 是否是需要重建所有有关这个字段的索引?如果需要重建索引是否有其他方式,重建索引代价巨大,一个索引创建都需要10个小时。
感谢~
这是表和索引不一致了,重建索引都没用。。。不行找专家吧
之前遇到过这个好像是个bug。看看是否是这个:https://github.com/pingcap/tidb/issues/43294
我们之前是重建索引解决的。但是你这个数据量有点大,是不太好处理。。。
Jasper
(Jasper)
4
你的表数据是怎么进到库里的 ,前面是不是有 lightning 导入失败?
可以试试 admin recover index
keithyzk
(Keithyzk)
6
不是lightning 导入进来的数据。执行了,也不行呐
keithyzk
(Keithyzk)
10
这个虽然是测试环境,但也不可以随便操作数据。我可以找一个同样环境的,造一些数据测试一下,但是应该造不了6亿那么大量。研发那边说的是,他们就是执行那个 update limit 执行多几次,就不行了
keithyzk
(Keithyzk)
11
我们把每次 update 调整小一些,多次尝试可以发现有时候可以 update ,有时候则会报错