第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"

);

上一篇:【阅读笔记】Refining activation downsampling with SoftPool


下一篇:卷积神经网络(CNN)学习