2万条数据的表,update很慢

【 TiDB 使用环境`】
生产环境

【 TiDB 版本】
v5.1.0

【遇到的问题】
不到2w条数据,但是update很慢
CREATE TABLE hs_pj_zq (
PJZQ_TYWYSBM varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT ‘’,
JG_TYWYSBM varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT ‘’,
ZS varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT ‘’,
KS_RQ datetime DEFAULT NULL COMMENT ‘’,
JS_RQ datetime DEFAULT NULL COMMENT ‘’,
MYD_SZ decimal(12,2) DEFAULT NULL COMMENT ‘’,
JD_SZ decimal(12,2) DEFAULT NULL COMMENT ‘’,
XTPJ_SZ decimal(12,2) DEFAULT NULL COMMENT ‘’,
PFRS int(10) DEFAULT NULL COMMENT ‘’,
ZDRS int(10) DEFAULT NULL COMMENT ‘’,
DBQK varchar(1) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘’,
XZZ_TYWYSBM varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT ‘’,
XZ_RQSJ datetime DEFAULT NULL COMMENT ‘’,
XGZ_TYWYSBM varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT ‘’,
XG_RQSJ datetime DEFAULT NULL COMMENT ‘’,
SCBS varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT ‘,
PRIMARY KEY (PJZQ_TYWYSBM) /*T![clustered_index] NONCLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT=’';

1 个赞

看下执行计划呢

2 个赞

看下监控,查看一下修改热点,然后打散修改,可以提高修改速度

1 个赞

update 前要把 主键搂出来,再去点写,发下执行计划

2 个赞

发下等待事件和相关等待。

2 个赞

执行计划

慢sql

2 个赞

看下TiDB的监控,然后再看看查询是不是也慢了,可能是集群有问题了,需要看监控和日志

2 个赞

我看了下3s以上的主要就这个,有可能是别的sql影响,需要看哪个面板?

2 个赞

面板看到有个"前序执行耗时",同一事务表被锁的原因吗?

2 个赞

执行计划,或者整理下碎片呢

2 个赞

应该是锁冲突导致的, 冲突一次,有重试等待

2 个赞

基表数据量是不是很多,看看你update的where条件是不是没走索引。

1 个赞

检查下scheduler cpu利用率: Grafana-tikv detail-thread cpu-scheduler worker CPU,如果很忙的话,可以调大scheduler-worker-pool-size(系统cpu足够的情况下)

1 个赞

检查Storage async 是否繁忙:(Grafana-tikv detail-starage-storage async write duration)

1 个赞

检查raftstore CPU是否繁忙(Grafana-tikv detail-thread CPU- raft store CPU)
如果繁忙可调大store-pool-size,store-max-batch-size ,raft-max-inflight-msgs

如果不忙,检查apply CPU 是否繁忙(Grafana-tikv detail-thread CPU- Async apply CPU),如果繁忙,调整apply-pool-size,apply-max-batch-size参数

1 个赞

Grafana-tikv detail-thread cpu-scheduler worker CPU

Grafana-tikv detail-starage-storage async write duration

Grafana-tikv detail-thread CPU- raft store CPU, Async apply CPU

1 个赞

还有本地raft log 大不大(Grafana-tikv detail-Raft IO-commit log duration) 如果大可适当调整

1 个赞

Grafana-tikv detail-Raft IO-commit log duration

1 个赞

如果,感觉你的cpu 使用有点高,你参照上面的 看看那3个参数 根据你的环境、资源是否可以调整一下

1 个赞

storage async 不高,
可以检查下系统磁盘IO延迟 及IO util、机器load 负载、是否出现 write stall/ server is busy 报错