【详述】
CREATE TABLE dw_nas_n1 (
request_time datetime NULL COMMENT “请求时间”,
src_asset_id int(11) NULL COMMENT “”,
dst_asset_id int(11) NULL COMMENT “”,
id bigint(20) NULL COMMENT “”,
ran_ip varchar(128) NULL COMMENT “”,
src_asset_name varchar(255) NULL COMMENT “”,
ran_port int(11) NULL COMMENT “”,
src_mac varchar(255) NULL COMMENT “”,
src_network_element_type bigint(20) NULL COMMENT “”,
amf_ip varchar(128) NULL COMMENT “”,
dst_asset_name varchar(255) NULL COMMENT “”,
amf_port int(11) NULL COMMENT “”,
dst_mac varchar(255) NULL COMMENT “”,
dst_network_element_type bigint(20) NULL COMMENT “”,
procedure1 int(11) NULL COMMENT “”,
msg_bimap int(11) NULL COMMENT “”,
cause_type int(11) NULL COMMENT “”,
cause_value int(11) NULL COMMENT “”,
ue_id_type tinyint(4) NULL COMMENT “”,
ue_id varchar(128) NULL COMMENT “”,
response_time datetime NULL COMMENT “”,
ran_ue_ngap_id bigint(20) NULL COMMENT “”,
amf_ue_ngap_id bigint(20) NULL COMMENT “”,
request_body varchar(65533) NULL COMMENT “”,
response_body varchar(65533) NULL COMMENT “”,
md5 varchar(32) NULL COMMENT “md5值(src_ip、src_ue_id、dst_ip、dst_ue_id)”,
ingestion_time datetime NULL COMMENT “表示数据进入starRocks的时间”,
INDEX idx_procedure1 (procedure1) USING BITMAP COMMENT ‘’,
INDEX idx_cause_type (cause_type) USING BITMAP COMMENT ‘’,
INDEX idx_cause_value (cause_value) USING BITMAP COMMENT ‘’,
INDEX idx_src_network_element_type (src_network_element_type) USING BITMAP COMMENT ‘’,
INDEX idx_dst_network_element_type (dst_network_element_type) USING BITMAP COMMENT ‘’
) ENGINE=OLAP
DUPLICATE KEY(request_time)
COMMENT “NAS话单”
PARTITION BY RANGE(request_time)(
PARTITION p20211110 VALUES [(‘2021-11-10 00:00:00’), (‘2021-11-11 00:00:00’)),
PARTITION p20211111 VALUES [(‘2021-11-11 00:00:00’), (‘2021-11-12 00:00:00’)),
PARTITION p20211112 VALUES [(‘2021-11-12 00:00:00’), (‘2021-11-13 00:00:00’)
)
DISTRIBUTED BY HASH(id) BUCKETS 32
PROPERTIES (
“replication_num” = “2”,
“bloom_filter_columns” = “src_asset_id, dst_asset_id, md5”,
“colocate_with” = “nas”,
“dynamic_partition.enable” = “true”,
“dynamic_partition.time_unit” = “DAY”,
“dynamic_partition.time_zone” = “Asia/Shanghai”,
“dynamic_partition.start” = “-2147483648”,
“dynamic_partition.end” = “10”,
“dynamic_partition.prefix” = “p”,
“dynamic_partition.buckets” = “32”,
“in_memory” = “false”,
“storage_format” = “DEFAULT”
);
【背景】
dw_nas_n1 数据量为20亿
select * from dw_nas_n1 limit 10
可以很快的出数据,个人理解为随机上一个分区的随机一个桶取了10条数据出来,所以很快
select * from dw_nas_n1 order by request_time limit 10
则要很长时间才能出数据,个人想法应该是判断第一个分区的数据量是不是大于10了,如果是则直接从第一个分区的32个桶里各取10条,合并数据后再取前10条。如果是这个逻辑耗时应该还好,但是实际效果肯定不是我想的这样。
哪位大佬可以给小弟指一条明路!!!这个表针对这个需求,要怎么优化!!谢谢!!
【StarRocks版本】例如:1.19.1


