zzps
(Zzps)
2022 年5 月 30 日 03:11
1
为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
tidb5.1.1 生产环境
【概述】 场景 + 问题概述
测试环境同样的sql可以走索引,但是生产环境不走索引
【背景】 做过哪些操作
生产环境上通过delete 语句做过数据删除,每次执行删除5万条左右
【现象】 业务和数据库现象
【问题】 当前遇到的问题
生产环境查询不走索引,索引失效
【业务影响】
查询超时
【TiDB 版本】
5.1.1
【应用软件及版本】
【附件】 相关日志及配置信息
TiUP Cluster Display 信息
TiUP CLuster Edit config 信息
监控(https://metricstool.pingcap.com/ )
TiDB-Overview Grafana监控
TiDB Grafana 监控
TiKV Grafana 监控
PD Grafana 监控
对应模块日志(包含问题前后 1 小时日志)
若提问为性能优化、故障排查 类问题,请下载脚本 运行。终端输出的打印结果,请务必全选 并复制粘贴上传。
zzps
(Zzps)
2022 年5 月 30 日 03:18
6
测试环境100多条数据同样的表结构和sql走索引。
生产环境8万多条数据不走索引,以前应该是走的。因为没有超时问题,一天前我手动用delete from table limit 50000 分多次删除了将近30万数据现在就客户反应超时了
哈喽沃德
2022 年5 月 30 日 03:21
10
ANALYZE [INCREMENTAL] TABLE TableName [PARTITION PartitionNameList] [IndexNameList] [WITH NUM BUCKETS];
哈喽沃德
2022 年5 月 30 日 03:22
11
生产环境建议业务窗口期再操作,或者等没啥业务的时候再操作。
caiyfc
2022 年5 月 30 日 03:22
12
可以analyze这个表,然后重新试试,可能是表的统计信息不准导致的
caiyfc
2022 年5 月 30 日 03:33
14
analyze table sell_order_item;
zzps
(Zzps)
2022 年5 月 30 日 03:38
15
好的,现在我再去执行sql,可以走索引了。现在我有两个疑问,我为什么会出现这个问题,这个analyze表不会自动吗,如果会自动,那我间隔时间绝对有将近48小时了距离删除操作
caiyfc
2022 年5 月 30 日 03:42
16
出现这个问题,就是因为删除了大量数据之后,没有及时analyze,导致统计信息不准确,就影响了执行计划的选择。analyze会自动,但是也有参数限制了,可以看看这里有自动收集的说明 统计信息简介 | PingCAP Docs
觉得默认值不正确,可以适当更改这几个值
zzps
(Zzps)
2022 年5 月 30 日 04:02
18
caiyfc:
但是也有参数限制了
我看了我的默认值是一样的没有变动, stats-lease这个不知道怎么看,那说明我是应该能自动更新的,那为什么一天多时间都没更新,而需要我手动去更新呢
caiyfc
2022 年5 月 30 日 05:53
19
stats-lease 参数是在样本文件的server_configs中设置的,如果没设置,默认是3s。
SHOW STATS_HEALTHY where healthy < 50 and healthy != 0;
查一下有没有范围内的表,如果没有就表示其他表已经analyze,那你可以调整tidb_auto_analyze_ratio为0.8
或者你可以在dashboard中搜索一下有没有关键字analyze,看看tidb有没有自动analyze
zzps
(Zzps)
2022 年5 月 30 日 06:29
20
嗯,我检查了所有的参数配置和系统变量都是默认的。SHOW STATS_HEALTHY也执行了没有数据。我好奇我删了好几张表数据就这张没有自动analyze。还有我不理解tidb_auto_analyze_ratio改成0.8,因为我看文档这是变更行数和总行数的百分比,我本来就没有自动analyze,这个数值再改大的话急更加不会自动analyze了。
还有一点我在看文档看到这个ANALYZE 配置持久化 ,,感觉这个和自动analyze是一回事啊,他们俩的区别是啥
边城元元
(边城元元)
2022 年5 月 30 日 06:36
21
大量数据之后,没有及时analyze,导致统计信息不准确,就影响了执行计划的选择。
执行计划在物理计划阶段是基于代价的这个时候依赖统计信息
建议业务窗口期再做批处理