analyze table 一直处于 running 的状态

有一张表30G左右,一直处于 running 的状态,processed_rows 一直也没有增加,导致卡主后面的一些 analyze table 操作,请问这个如何处理?

TiDB 版本 v4.0.1

2 个赞

请看看是不是有锁?

1 个赞

指的是 ddl 锁吗?我查了下没有

2 个赞

不知道是不是正式环境,能停止外部连接静态去做吗?

2 个赞

是生产环境,感觉是被其他的 analyze table 卡主了,可以取消 其他的 analyze table 的操作吗?

2 个赞

正式的,我还不敢给出建议。我都是非正式使用。

2 个赞

不过我觉得你取消后面的问题不大。

2 个赞

我也尝试过 ctrl + c 取消,full processlist 里面还有 ,tidb kill xxx 了之后 show analyze status 里面还是 running 的状态

1 个赞

这是跑了3个一样的analyze吗?

有两个建议:
1、调参数加快analyze的执行,需要配置比较高的机器,参考(用完记得改回括号里的默认值):
set global tidb_build_stats_concurrency=20; (4)
set global tidb_distsql_scan_concurrency=20; (15)
set global tidb_index_serial_scan_concurrency=2; (1)
2、重启TiBD节点

3 个赞

建议查询一下锁信息。

2 个赞

建议重启TiBD节点

1 个赞

大表analyze是很慢,看下log吧,看是不是一直锁冲突

1 个赞

一个 table 级别的 analyze 包含3个索引

1 个赞

是不是并发线程设置的太小了,执行比较费时间啊。查查参数值

1 个赞

可以用show processlist,看一看有哪些analyze在跑,可以看情况强行终止

1 个赞

原因:etcd在选举 owner 时报错, rolling restart tidb 节点也不行
解决:tiup cluster restart xxx -R tidb

2 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。