手动收集统计信息

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
analyze一个表,查看记录:
analyze table all columns with 256 buckets, 500 topn, 0.0008299058160259808 samplerate
手动指定参数后:–修改了buckets和samplerate
analyze table all columns with 1024 buckets, 500 topn, 0.005 samplerate。
默认配置会持久化,下次analyze table 的时候会使用上次指定的参数。
怎样才能恢复到默认值?让采样率自动生成
【资源配置】
【附件:截图/日志/监控】

官方文档有相关说明:https://docs.pingcap.com/zh/tidb/stable/statistics#手动收集

如果要持久化 ANALYZE 语句中列的配置,请设置系统变量 tidb_persist_analyze_options 的值设置为 ON 以开启 ANALYZE 配置持久化特性。开启 ANALYZE 配置持久化特性后:

  • 当 TiDB 自动收集统计信息或者你手动执行 ANALYZE 语句收集统计信息但未指定列的配置时,TiDB 会继续沿用之前持久化的配置。
  • 当多次手动执行 ANALYZE 语句并指定列的配置时,TiDB 会使用最新一次 ANALYZE 指定的配置项覆盖上一次记录的持久化配置。

所以,如果你不想持久化配置,可以设置系统变量 tidb_persist_analyze_options 的值为 OFF 以关闭 ANALYZE 配置持久化。

有没有在表级别的设置呢
关闭持久化以后,其它表的持久化也都会被关闭

不想关闭全库持久化的话,直接对你想要恢复默认值的表进行一次默认值的收集统计信息,下次他就使用默认值进行统计信息收集了

samplerate 这个看着没有默认值

可以先使用以下语句清除先前指定的持久化参数,alter table <table_name> modify column <column_name> statistics null;

试了下先删除再统计可以
DROP STATS xxx;
谢谢各位

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