如何优化tidb占用CPU高的问题

【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】大量数据写入
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】

根据dashboard的慢SQL,先优化掉

SQL优化。

大量数据写入可以考虑用批量插入,就是insert into XXX values 多个values拼成一个

4.0少了不少诊断便捷性,也快到生命周期了。建议升级到6.5.x 吧,dashboard 有top sql 面板(top cpu),看这些问题都分分钟系列。

TiDB 版本周期支持策略 | PingCAP

1.使用haproxy 2.优化sql

得先判断是什么导致的CPU高吧?TiDB 一般是SQL导致的可能是大量SQL解析,或者慢SQL或者大量小SQL,看看tidb监控和dashboard的top SQL

topsql先瞅瞅

优化SQL,小事务,低并发

4.0.0版本有点低了,不大好排查。建议从慢查询和tidb.log日志两方面入手,日志里搜expensive_query
https://docs.pingcap.com/zh/tidb/v4.0/identify-expensive-queries#定位消耗系统资源多的查询

做负载均衡啊,HA+KEEPLIVE

1、根据TiDB Dashboard的Top SQL,优化使用CPU比较多的慢SQL;
2、做好TiDB节点的负载均衡,可以查看Grafana的TiDB面板下的Connection Count分布,评估是否每个TiDB节点的连接数是否比较均衡;
3、大数据量写入,看看能不能采用读写分离(TiFlash读取+流式攒批写入),或者拆批写入,尽量小事务,避免大事务。

看看sql统计,或者写脚本查看当前执行的sql,事后可以慢日志分析

导致cpu高,主要还是查询sql导致。先从优化sql着手处理,如果还解决不了只能增加配置了。