analyze worker panic

【 TiDB 使用环境】线上
【 TiDB 版本】5.7.25-TiDB-v5.4.0
【遇到的问题】某些表会出现analyze失败,不管是auto的还是手动执行的都会失败
【复现路径】手动执行 analyze table ${tableName}
【问题现象及影响】
analyze失败后,统计信息不准确,导致查询慢

【附件】
logs.zip (595.9 KB)

请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。

[t_account_erp_report|attachment](upload://tns1goTJgdDwp0dVu9jhdDS6DJt.) (845 字节)

日志好丰富:grinning:

清空失败的表,重新收集。是不是OOM了? tidb_analyze_version是多少版本的

检查 tidb_analyze_version是不是等于2

tidb_analyze_version = 2 时,如果执行 ANALYZE 语句后发生 OOM,请设置全局变量 tidb_analyze_version = 1 ,然后进行以下操作之一:

  • 如果 ANALYZE 语句是手动执行的,请手动 analyze 每张需要的表:
select distinct(concat('ANALYZE ',table_schema, '.', table_name,';')) from information_schema.tables, mysql.stats_histograms where stats_ver = 2 and table_id = tidb_table_id ;
  • 如果 ANALYZE 语句是开启了自动 analyze 后 TiDB 自动执行的,请使用以下 SQL 语句生成 DROP STATS 的语句并执行:
select distinct(concat('DROP STATS ',table_schema, '.', table_name,';')) from information_schema.tables, mysql.stats_histograms where stats_ver = 2 and table_id = tidb_table_id ;

tidb_analyze_version版本是2 默认值是2 修改成1之后 就可以执行成功,没发现有oom的日志

是的 v5.3之后 默认值就是2了 尝试过修改成1之后 执行analyze table成功

tidb_enable_fast_analyze 这个变量值修改过么?默认为0

没去修改过 目前是off

尝试过这个没?
tidb_analyze_version = 2 时,如果执行 ANALYZE 语句后发生 OOM,请设置全局变量 tidb_analyze_version = 1 ,然后进行以下操作之一:

  • 如果 ANALYZE 语句是手动执行的,请手动 analyze 每张需要的表:
select distinct(concat('ANALYZE ',table_schema, '.', table_name,';')) from information_schema.tables, mysql.stats_histograms where stats_ver = 2 and table_id = tidb_table_id ;
  • 如果 ANALYZE 语句是开启了自动 analyze 后 TiDB 自动执行的,请使用以下 SQL 语句生成 DROP STATS 的语句并执行:
select distinct(concat('DROP STATS ',table_schema, '.', table_name,';')) from information_

如果表较大,统计信息不准,提高采样率WITH FLOAT_NUM SAMPLERATE。也可以参考下这个链接全量采集里的几个采集选项

尝试过了 version设置成1 analyze table语句是可以执行成功的,但是没发现有oom的异常信息

统计信息收集成功,但是信息不准?数据量大么?数据分布是否均衡?调整一下默认的ANALYZE选项试试。

feedback-probability 看下这个参数

不是统计信息收集准不准的问题,是使用version 2的时候 会收集失败,改成1就成功了,数据量不大很小的一个表

“feedback-probability”: 0 这个参数是默认值 0 没去开启

我前两天也是因为这个参数,其中一个节点OOM了

该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。