内部analyze table的频率是?

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】 v6.5.1
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】


我这为啥这么久的时间啊

问题1:Analyze table的频率会根据集群的配置和表的更新行数占比有关,具体可以查一下官网文档。

问题2:analyze table 会重新读取默认比例的全部数据行出来,重新分析和计算,然后再更新统计信息,这个过程通常会比较消耗资源和时间,具体根据表的大小和集群当时可用资源情况,消耗时间会有长有短

image
采样频率就看这几个参数。

你的表够大,增删改够多,理论上你自动分析开启24小时的话,会全天24小时一直自动收集。

基本没有写入啊,表是很大

可改成每周analyze table一次吗

没周没改过,但是可以控制starttime和endtime时间,我一般在0点到6点做analyze,而且tidb_auto_analyze_ratio也调的比较低。

是不是导入时候analyze失败后,一直没有analyze成功?可以手动analyze一下试试,默认情况下变更超过总行数的50%才会开始自动analyze的

show analyze status;看下具体情况

我看看啊,这是相关结果,好多是吧的啊
image

statu.txt (9.1 KB)

memb_tabb表比较大,自动收集统计信息时间太长被中断了,建议手工收集一下,可以参考数据库的忙碌程度,选择较闲时段,多开点并发收集,https://docs.pingcap.com/zh/tidb/stable/statistics#控制-analyze-并发度
另外可以不要全表收集,可以设定一个合适的采样率进行收集, WITH FLOAT_NUM SAMPLERATE 用于指定采样率
https://docs.pingcap.com/zh/tidb/stable/statistics#全量收集

2 个赞

帮忙看一下,我这状态好多失败的

看到很多被中断的,你发一下当前集群的analyze相关的参数吧,类似这种的

1 个赞

这是相关信息,这个我设置成0,然后不限制时间?对吗?
image

我已经设置为0了

自动analyze设置了最大时间,貌似有大表超时了,你可以先把analyze控制在很短的一个时间,start_time,end_time控制在几个小时之内,先后把失败的表通过命令行手动analyze table table_name来执行,注意在业务低峰期执行,或者执行的时候看看监控别影响业务

我这个表更新不频繁,月度更新一次,

set global tidb_max_auto_analyze_time =0;

是不是就行了啊

可以先试试手动analyze时间多长,低版本一般手动都会比自动快很多,如果这个大表不经常查询无所谓,但是tidb貌似没有办法根据表级别设定是否analyze,指定设定时间点,和触发的变更ratio

我这个现在已经在自动analyze 了,只不过超时后就又重新启动了,手动的方式我还要学习一下,先看看这次不限制时间如何,手动是可以并发,所以快,对吧

手动的analyze的逻辑貌似不太一样,原理我也没细看,单独一张表执行analyze手动更好点,自动有时候会触发一些bug,大表更明显些,比如gc相关的超时等,或者无法kill等,可以搜一下论坛上的帖子,有很多相关的

1 个赞