tidb 8.5.2 迁移升级后 tikv cpu 拉满

【TiDB 使用环境】生产环境
【TiDB 版本】8.5.2
【操作系统】 Rockylinux
【部署方式】物理机
【集群数据量】1T
【集群节点数】14
【问题复现路径】原6.5.3迁移数据至新8.5.2集群,迁移部分线上业务后出现
【遇到的问题:问题现象及影响】
目前kv读写缓慢,然后出现unified read pool cpu 被拉满,怀疑是大读热点,优化后效果不是很明显。
【资源配置}


如果确定是热点问题,可以通过 tidb中hot_region_history确定热点region,,table。或者热力图也行。 后续对表进行auto_random的打散

需要多提供点信息才能分析了,这些不够的

最好是有具体的场景,比如 xx Table,数据量多少,一共多少个region,结构是怎么样的,在流量图上有明显的热点,读写偏斜

可以分析下具体大SQL

Tikv的流量大吗? 看看哪些表流量特别大,手动分析下这这边看看效果。

学习了

如果业务没什么明显变化可以重点关注两个情况
1.看dashboard慢sql,是否有执行计划不对的地方
2.看analyze的情况,调整下analyze的时间,如果cpu立马下来,就是analyze的问题

找消耗资源大的SQL看下

最新的测试情况,升级之后很多原本应该走索引的语句 或者走tiflash的 直接走了kv导致,举个例子
where条件中外层带括号走 不走索引。没搞懂为啥

查询语句1
desc SELECT
VideoId AS BookId,
Language AS BookLanguage
FROM
VideoInfo
WHERE
(VideoId IN (‘15806446’));

查询语句2
desc SELECT
VideoId AS BookId,
Language AS BookLanguage
FROM
VideoInfo
WHERE
VideoId IN (‘15806446’);

表结构:
CREATE TABLE VideoInfo (
Id bigint NOT NULL /*T![auto_rand] AUTO_RANDOM(5) */ COMMENT ‘主键ID’,
ProductId int DEFAULT ‘0’ COMMENT ‘语言’,
VideoId varchar(128) DEFAULT NULL COMMENT ‘Id=SeriesId’,
VideoName varchar(256) DEFAULT NULL COMMENT ‘名称=SeriesName’,
PRIMARY KEY (Id) /*T![clustered_index] CLUSTERED */,
UNIQUE KEY idx_ProductId_VideoId (ProductId,VideoId),
KEY idx_videoId (VideoId),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

分析慢查询日志找出那些消耗大量资源的查询, 可以尝试调整readpool.unify-level 和相关参数来优化读操作的性能。

表和索引的统计信息都是最新的吗?

是的,统计信息都是最新,这个语句在6.5.3的时候 他就走索引。

加hint强制走索引呢?

数据库里大概有多少张表?看一下 grafana 监控 tidb->Statistics & Plan Management 下面的监控

再强制走tiflash试试,如果强制走,都正常。那我估计还是统计信息不是很准确

数据迁移怎么迁移的,迁移后有更新统计信息吗

强制走 也不生效

没多少,几万张吧

统计信息没有 miss 的情况,感觉和统计信息可能没啥关系了

可以看一下强制走索引不生效的时候有没有什么 warning