TiDB迁移实战:解决“Region is unavailable”报错与隐式类型转换引发的索引失效
文章目录
- 背景
- 分析
- 官方错误说明
- 第 1 次分析 SQL 执行计划
- 观察 TiDB Dashboard
- 第 2 次分析 SQL 执行计划
- 第 3 次分析 SQL 执行计划
- 解决
- 扩展学习 - TiDB 隐式转换规则及后果
- 什么时候会有隐式转换?
- 隐式转换规则
- 隐式转换引发的不良后果
- 索引失效
- 精度丢失
- 参考
背景
🌩️ MySQL 5.7 迁移到 TiDB 7.1.5 后,SQL 执行总是报错:Region is unavailable 😂
💨 执行的 SQL 如下:
- vdm_detail 是一张表,包含 id、used_time、code、code_main
- SQL 逻辑:先按照 code_main 分组,并排序找到 used_time 最新的一条 id
- group_concat(id order by used_time):按照 used_time 升序排列,并逗号拼接在一起
- SUBSTRING_INDEX(xxx, ‘,’, -1):将上述结果用逗号分隔,并获取最后一条记录
selectvdm.id, vdm.xxx
from xxx_xxx