我是人间不清醒
(唐强)
2024 年3 月 11 日 01:40
1
【 TiDB 使用环境】生产环境
【 TiDB 版本】7.1.3
【复现路径】做过哪些操作出现的问题
【遇到的问题:采用一地两中心,建设主通过ticdc到从,在监控中发现一个慢语句,分别在主,和从中 explain analyze 发现索引选择不一致,相差较大】
主:
从:
where语句 如下 :
WHERE
(
district_id LIKE '130982207%'
OR district_id = '130982501205'
)
AND p.area_id = '1309'
AND p.birthday >= '2024-01-01'
AND p.birthday <= '2024-01-31 23:59:59'
AND p.is_deleted != 1
AND p.create_type_code = 2
AND 1 = 1
ORDER BY
p.entering_time DESC
LIMIT
20 OFFSET 0;
请问下,这个怎样优化,让主库中命中正确的索引。
小于同学
(小于同学)
2024 年3 月 11 日 01:45
2
会不会是因为你第一个p .birthday>='2024-01-01’不标准导致的,改成p .birthday>='2024-01-01 00:00:00’试试呢
我是人间不清醒
(唐强)
2024 年3 月 11 日 01:48
3
不是,两个中心的数据是一模一样。在执行的时候索引选择不一样,我刚才按照你说的调整sql语句执行,没有变化
从库版本和主库一样吗?
不行主库加上 IGNORE_INDEX(p ,area_id +entering_time字段上的索引)或指定 FORCE_INDEX(p,area_id +birthday 字段上的索引)吧
我是人间不清醒
(唐强)
2024 年3 月 11 日 02:01
8
是有效过,但是研发侧需要改造比较大。 主从数据一致,配置 从库要低些,从库主要用户bi和报表
啦啦啦啦啦
2024 年3 月 11 日 02:06
10
我是人间不清醒
(唐强)
2024 年3 月 11 日 02:06
11
我绑定试试,没有做过,绑定执行计划这块有经验分享么,需要注意那些,因为是生产,比较谨慎
啦啦啦啦啦
2024 年3 月 11 日 02:11
12
我们这边用的挺多的,没遇到什么问题,绑定的执行计划也可以随时关闭或者删除
可以参考下社区的使用案例
1 个赞
版本一致的话,确实不好确定问题在哪,也可以用绑定执行计划的方式。
我遇到过类似的问题,主从执行计划不一致,是因为主库是从低版本升级上来了,默认没有开启索引合并
统计信息更新下, 或可解决问题。 优化器怎么选择有的时候还真是不容易理解,慢慢研究下吧。