show variables like ‘%analyze%’; 看下你现在的配置。 可以再用个新表同样灌入100万数据 show stats_meta where table_name=‘xxxx’ 观察下变化
±---------------------------------------±------------+
| Variable_name | Value |
±---------------------------------------±------------+
| tidb_analyze_partition_concurrency | 1 |
| tidb_analyze_version | 2 |
| tidb_auto_analyze_end_time | 23:59 +0000 |
| tidb_auto_analyze_partition_batch_size | 1 |
| tidb_auto_analyze_ratio | 0.5 |
| tidb_auto_analyze_start_time | 00:00 +0000 |
| tidb_enable_analyze_snapshot | OFF |
| tidb_enable_auto_analyze | ON |
| tidb_enable_fast_analyze | OFF |
| tidb_max_auto_analyze_time | 43200 |
| tidb_mem_quota_analyze | -1 |
| tidb_persist_analyze_options | ON |
有时间我测试下。你们使用的库,没有大批量灌数据的场景吗?是不是也有这个问题?
按理说仅仅一次性灌入100万数据后不应该在2、3个小时内analyze好几次
如果他的灌入方式不是insert 而是replace 呢
下周我测试下
应该是insert ,不是replace into
你再确认下 是不是一次灌入的
是批量的,一次5000行,循环执行的
- 触发机制:https://docs.pingcap.com/zh/tidb/stable/sql-faq#在-tidb-中-auto-analyze-的触发策略是怎样的
- 可以调整 auto Analyze 时间范围,这个是集群级别的:https://docs.pingcap.com/zh/tidb/stable/statistics#自动更新
|—|—|—|
|tidb_auto_analyze_start_time|00:00 +0000|一天中能够进行自动更新的开始时间|
|—|—|—|
|tidb_auto_analyze_end_time|23:59 +0000|一天中能够进行自动更新的结束时间|
|—|—|—|
+0000 改为 +0800
analyze参数有这几个维度的,第一个是自动analyze的时间,可以调整到跑批后,第二个是自动analyze的阈值,比如表的变动超过0.6会触发,第三个是并发度的调整,同时可以进行几个analyze。可以从这几个角度调整下。
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。