为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【概述】 表按月分区,该表开了tiflash 3副本,查询某一个月的数据,语句包含count(distinct),查询很慢,不知道是否可优化。
【现象】 加了distinct后耗时40s+,加了下推参数 tidb_opt_distinct_agg_push_down后也要20s+,只count就528ms
【问题】 执行很慢,是否可优化
【统计信息是否最新】
【执行计划内容】
Projection_9 | 6.35 | root | log_dw.dwd_resource.resource_type, Column#24 | |
---|---|---|---|---|
└─TopN_12 | 6.35 | root | Column#24:desc, offset:0, count:50 | |
└─HashAgg_26 | 6.35 | root | group by:log_dw.dwd_resource.resource_type, funcs:count(distinct log_dw.dwd_resource.event_id)->Column#24, funcs:firstrow(log_dw.dwd_resource.resource_type)->log_dw.dwd_resource.resource_type | |
└─TableReader_27 | 6.35 | root | data:HashAgg_17 | |
└─HashAgg_17 | 6.35 | batchCop[tiflash] | group by:log_dw.dwd_resource.event_id, log_dw.dwd_resource.resource_type, | |
└─Selection_25 | 25162012.35 | batchCop[tiflash] | ge(log_dw.dwd_resource.event_time, 2021-06-01), in(log_dw.dwd_resource.operate_type, 2, 17), lt(log_dw.dwd_resource.event_time, 2021-07-01) | |
└─TableFullScan_24 | 162104310.00 | batchCop[tiflash] | table:dwd_resource, partition:p202106 | keep order:false |
【 SQL 文本、schema 以及 数据分布】
SELECT resource_type AS resource_type,
count(DISTINCT event_id) AS count(DISTINCT event_id)
FROM dwd_resource
WHERE event_time >= STR_TO_DATE(‘2021-06-01’, ‘%Y-%m-%d’)
AND event_time < STR_TO_DATE(‘2021-07-01’, ‘%Y-%m-%d’)
AND operate_type IN (2,17)
GROUP BY resource_type
ORDER BY count(DISTINCT event_id)
DESC
LIMIT 50;
【业务影响】
查询过慢
【TiDB 版本】 TiDB版本: 5.1.0
【附件】 相关日志及监控(https://metricstool.pingcap.com/)
- TiUP Cluster Display 信息
- TiUP CLuster Edit config 信息
- TiDB-Overview Grafana监控
- TiDB Grafana 监控
- TiKV Grafana 监控
- PD Grafana 监控
- 对应模块日志(包含问题前后 1 小时日志)