doris单表查询非常慢

单张表,3千万的数据,表按月分区,查询一个月的数据需要20s以上,目前只有3台机器,fe 和 be共用,3台都是16核64g内存,请问下有什么优化的方式么?

增加机器,优化sql

方便的话贴下DDL,还有查询语句,隐私部分可以去掉,这样有利于我们进行分析。

我们这边压测一亿数据范围查询9000多条,不到1秒。也是按月分区,32个桶

16核32G。

create table report_corpus_invoke(
rdate date comment default null ‘日期’,
data_id varchar(30) default null comment ‘语料id’,
user_id varchar(30) default null comment ‘用户id’,
query varchar(500) default null comment ‘查询词’,
click_count int(11) default ‘0’ comment ‘调用次数’,
praise_count int(11) default ‘0’ comment ‘点赞次数’
)
engine=olap
unique KEY(rdate, data_id, user_id, query)
PARTITION BY RANGE(date)
(
PARTITION p202001 VALUES LESS THAN (“2020-02-01”),
PARTITION p202002 VALUES LESS THAN (“2020-03-01”),
PARTITION p202003 VALUES LESS THAN (“2020-04-01”),
PARTITION p202004 VALUES LESS THAN (“2020-05-01”),
PARTITION p202005 VALUES LESS THAN (“2020-06-01”),
PARTITION p202006 VALUES LESS THAN (“2020-07-01”)
)
DISTRIBUTED BY HASH(data_id) BUCKETS 16
PROPERTIES
(
“replication_num” = “3”,
“storage_medium” = “SSD”,
“storage_cooldown_time” = “2021-01-01 12:00:00”
)

report_corpus_invoke 这个表,有个比较大文本的字段query,直接使用select rdate,data_id,user_id,query,click_count,praise_cout from rdate >=‘2020-03-01’ and rdate<=‘2021-03-31’ 的话,很慢,一个月大概接近1千万数据了, 不知道是不是根query这个字段有关系呀?还是跟我的分桶有关?

就是简单的单张表查询咋优化sql

我这张表,用show data查看,有5个g的大小

你用的是 unique key 模型,这个模型性能会差不少(因为需要数据用 replace 方式聚合)。
你导入的频次如何,如果导入快的话,版本数量多,那很大时间就耗在 SCAN 节点的聚合上了(MERGE、Sort),你可以从 profile 里找下 OLAP_SCAN_NODE看下(找下最耗时的节点在哪里)。
并且你 unique key 里的列还是字符串,合并速度就更慢了。