为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
云服务器
【概述】 场景 + 问题概述
场景:单表数据达到3000万,针对字段条件统计慢(100s以上),由MySQL迁移到TiDB,统计速度上升了
问题:查询或根据字段条件查询速度降低了,比如,select id from table_tracknumber order by id desc limit 1;需要3s
【背景】 做过哪些操作
表迁移
【现象】 业务和数据库现象
查询语句比原来慢,导致一些功能响应速度降低
【问题】 当前遇到的问题
查询速度降低,
【业务影响】
api调用速度降低,出现超时情况
【TiDB 版本】
TiDB-v5.0.0
【应用软件及版本】
【附件】 相关日志及配置信息
查看附件TiDB.txt
- TiUP Cluster Display 信息
查看附件TiDB.txt
- TiUP CLuster Edit config 信息
查看附件TiDB.txt
监控(https://metricstool.pingcap.com/)
查看附件tidb-biguser-PD_2021-09-04T06_19_45.467Z.json (2.9 MB) tidb-biguser-TiDB_2021-09-04T06_18_09.472Z.json (2.6 MB) tidb-biguser-TiKV-Summary_2021-09-04T06_21_09.005Z.json (1.5 MB) TiDB.txt (496.9 KB)
- TiDB-Overview Grafana监控
- TiDB Grafana 监控
- TiKV Grafana 监控
- PD Grafana 监控
- 对应模块日志(包含问题前后 1 小时日志)
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
1 个赞
xfworld
(魔幻之翼)
2
可以放个 explain SQL 的图上来么?
最好在放个 explain analyze SQL 的图上来…
慢日志的plan结果有点长,170+行,放附件TiDB.txt,帮忙看下~
xfworld
(魔幻之翼)
5
看到结果拉,相关的数据表是不是有很大的数据变动,我看计划中遍历的row数量有点不对,我建议你先做下表的数据分析,
analyze table xxx;
参考文档
https://docs.pingcap.com/zh/tidb/v5.0/sql-statement-analyze-table#语法图
你先试试效果
好的,谢谢你的贡献~这边看下
然后,数据变动是指会经常更新么,表确实是会不断更新数据的
row数量是因为表按月分区,条件里没有时间作为条件
analyze table xxx;这个弄了之后还是一样呢
这边看了,主要是Tidb的Compile_time、Optimize_time的时间占用,请问这块如何优化
xfworld
(魔幻之翼)
8
还有很大的优化空间咯… 这个只能用 explain 来看结果进行优化了
1,plan结果在TiDB.txt中有的,谢谢帮忙看下,因为从慢日志及“ * Compile_time
:表示这个语句在查询优化阶段花费的时间。”这句说明,目前感觉无从入手
2,plan结果170+行,是分区使然,这边确认下去掉分区后效果怎样
Kongdom
(Kongdom)
10
表是按月分区,然后查询的时候where条件中没有分区关键字,有没有可能是这里的问题。没有分区关键字应该会扫描所有分区吧。
1 个赞
xfworld
(魔幻之翼)
11
你的把你analyze table 之后的,explain 发出来
分区不会有什么问题的,但是 SQL 本身 不是按照 最佳实践的方向写出来的,一定拿不到好结果
分区的本意,就是可以让筛选数据时,可以过滤更小的范围,不用扫描无关的部分,除了加速外,还能减少资源的消耗
是的,where条件中没有时间这个分区关键字,过滤范围不会精确到一个分区,
只是有个情况是,原来的MySQL也是这样的,然后现在速度相对降低了
Kongdom
(Kongdom)
13
如果有大量的空分区,检索这些空分区也会产生损耗吧~ 之前还遇到过分区内索引失效的情况,不过应该不适用这里。
1 个赞
Kongdom
(Kongdom)
14
先按楼上大佬的思路排查吧~
但是,给我的感觉就是设计不合理,既然按日期分区,那业务操作就必然落到某个时间范围上。
1 个赞
Kongdom
(Kongdom)
16
我们之前按月分区,一下子将未来10年的分区都分好了。可以想象有多少空分区。
主要是这个不能自动添加分区,只能手工添加,所以我们的工程师就一下子加了10年~
1 个赞
好的,最佳实践的方向,帮忙指下什么样的,下面是慢日志中刚出现的截图,TiDB.txt附件一并更新了
explain结果
TiDB.txt (626.3 KB)
是的,业务操作最好落到时间范围,目前是会有部分场景没能满足这样条件的
是的,客户导入数据,导入前检查是否表中有数据,目前检查范围是没能限制到某个分区