【详述】
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