第2.5章:StarRocks表设计--数据类型
作者:互联网
定义恰当数据字段类型对StarRocks查询的优化是非常重要的,从查询效率的角度考虑,我们可以遵循两条原则:
- 如果数据没有Null,可以指定Not Null属性;
- 尽量使用数字列代替字符串列。
StarRocks支持多种类型,大致可以分为:数值、时间、字符以和其他类型。
1数值类型
1.1严格数值整型
类型 | 大小 | 范围(区间) |
TINYINT | 1 Byte | [-128 , 127] |
SMALLINT | 2 Bytes | [-32768 , 32767] |
INT | 4 Bytes | [-2147483648 , 21474836470] |
BIGINT | 8 Bytes | [-9223372036854775808 , 9223372036854775807] |
LARGEINT | 16 Bytes | [-2^127 + 1 , 2^127 – 1] |
BOOLEAN | 1 Byte | 0或1(0代表False,1代表True) |
1.2近似数值类型
类型 | 大小 | 范围(区间) |
FLOAT | 4 Bytes | [-3.402 823 466 E+38,-1.175 494 351 E-38],0,[1.175 494 351 E-38,3.402 823 466 351 E+38] |
DOUBLE | 8 Bytes | [-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308],0,[2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308] |
1.3高精度定点数
类型 | 大小 | 范围 | 说明 |
Decimal V2 | 8 Bytes | DECIMAL(M[,D]) | M范围是[1,27],D的范围[1, 9],M需大于等于D的取值。默认的D取值为0 |
Fast Decimal | 16 Bytes | M的范围是[1,38], D的范围[1, M]。默认的D取值为0。 |
注意:自StarRocks 1.18版本已默认为Fast Decimal。
2日期和时间类型
StarRocks的时间类型只有两个:DATA和DATATIME,这两个类型都不会保存时区信息。
类型 | 大小 | 取值范围 | 默认形式 |
DATE | 4 Bytes | ['0000-01-01', '9999-12-31'] | YYYY-MM-DD |
DATETIME | 8 Bytes | ['0000-01-01 00:00:00', '9999-12-31 23:59:59'] | YYYY-MM-DD HH:MM:SS |
3字符串类型
StarRocks的字符串类型目前有三种:
类型 | 范围 | 用途 |
CHAR | CHAR(M),M为[1, 255] | 定长字符串 |
VARCHAR | VARCHAR(M),M为[1, 65533] | 变长字符串 |
STRING | 目前等价与VARCHAR(65533) | 变长字符串 |
说明:
1)Varchar中,由于前两个字节用于表示长度,因此比65535少两字节;
2)上表中M的值为字节数(不同于MySQL的字符数),所以在做MySQL的数据迁移时,StarRocks中M的值可以是MySQL的三到四倍;
3)当前不支持不限长的文本存储。
4其他类型
4.1 HLL(HyperLogLog)
HLL是基于HyperLogLog算法的工程实现,用于保存HyperLogLog计算过程的中间结果。hll(length),长度length范围1~16385。用户不需要指定长度和默认值、长度根据数据的聚合程度系统内控制,并且HLL列只能通过配套的hll_union_agg、hll_cardinality、hll_hash进行查询或使用。
使用示例:
create table table09(
id int,
dt date,
uv hll hll_union
)
distributed by hash(id) buckets 32;
4.2 BITMAP
BITMAP与HLL类似只能作为聚合表的value类型使用,常见用来加速count distinct的去重计数使用。
使用示例:
CREATE TABLE table10 (
`page_id` INT NOT NULL COMMENT '页面id',
`visit_date` datetime NOT NULL COMMENT '访问时间',
`visit_users` BITMAP BITMAP_UNION NOT NULL COMMENT '访问用户id'
) ENGINE=OLAP
AGGREGATE KEY(`page_id`, `visit_date`)
DISTRIBUTED BY HASH(`page_id`) BUCKETS 10
PROPERTIES (
"replication_num" = "1"
);
标签:StarRocks,38,--,数据类型,Bytes,hll,类型,id 来源: https://blog.csdn.net/ult_me/article/details/122287963