手机网站开发,app与网站的区别功能,加工活外放的正规公司,宁波seo建站价格1 分区与分桶 Doris中有两层的数据划分#xff0c;第一层是分区#xff08;Partition#xff09;#xff0c;第二层是分桶#xff08;Bucket#xff09;#xff0c; Partition又能分为Range分区和List分区。 Bucket仅支持Hash方式。
1.1 Partition 只能指定…1 分区与分桶 Doris中有两层的数据划分第一层是分区Partition第二层是分桶Bucket Partition又能分为Range分区和List分区。 Bucket仅支持Hash方式。
1.1 Partition 只能指定Key列作为分区列 指定分区值时需要加双引号 理论上分区数量没有上限 在不使用分区建表时系统会自动创建一个表名一致但是用户不可见的全表分区 1.1.1 Partition_Range 按照指定范围进行分区一般生产环境下会使用日期作为分区 VALUES LESS THAN (...) 仅指定上界系统会将前一个分区的上界作为该分区的下界会生成一个左闭右开的区间 VALUES [....) 同时指定上下界比较好理解也会生成一个左闭右开的区间 查看Partition的使用命令HELP PARTITION
示例
-- 创建一张Range分区表
CREATE TABLE IF NOT EXISTS test.student
(id LARGEINT NOT NULL COMMENT 学生id,name VARCHAR(50) NOT NULL COMMENT 学生名字,class INT COMMENT 学生所在班级,age SMALLINT COMMENT 学生年龄,sex TINYINT COMMENT 学生性别,phone LARGEINT COMMENT 学生电话,address VARCHAR(500) COMMENT 学生家庭地址,date DATE NOT NULL COMMENT 数据录入时间
)
ENGINEolap
DUPLICATE KEY(id, name)
PARTITION BY RANGE(date)
(PARTITION d202204 VALUES LESS THAN (2022-04-01),PARTITION d202205 VALUES LESS THAN (2022-05-01),PARTITION d202206 VALUES LESS THAN (2022-06-01)
)DISTRIBUTED BY HASH(id) BUCKETS 8
PROPERTIES
(replication_num 3,storage_medium SSD,storage_cooldown_time 2022-06-16 12:00:00
); 查看表的分区SHOW PARTITIONS FROM TABLE; 1.1.2 Partition_List 分区支持的数据类型BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, DATE, DATETIME, CHAR, VARCHAR 分区值是枚举值当数据在目标分区枚举值中时才能命中分区 操作VALUES IN(....) 示例
-- 创建一张List分区表
CREATE TABLE IF NOT EXISTS test.student
(id LARGEINT NOT NULL COMMENT 学生id,name VARCHAR(50) NOT NULL COMMENT 学生名字,class INT NOT NULL COMMENT 学生所在班级,age SMALLINT COMMENT 学生年龄,sex TINYINT COMMENT 学生性别,phone LARGEINT COMMENT 学生电话,address VARCHAR(500) NOT NULL COMMENT 学生家庭地址
)
ENGINEolap
DUPLICATE KEY(id, name)
PARTITION BY List(address )
(PARTITION p_city1 VALUES IN (浦东,闵行),PARTITION p_city2 VALUES IN (海淀,昌平),PARTITION p_city3 VALUES IN (太原,忻州)
)DISTRIBUTED BY HASH(id) BUCKETS 8
PROPERTIES
(replication_num 3,storage_medium SSD,storage_cooldown_time 2022-06-17 12:00:00
); 1.2 Backet分桶 如果创建的表是分区表那么Backet就是对分区进行Distributed划分如果不是分区表那么就是对整个表进行划分。 分桶列只能是Key列分桶列可以和分区列相同或不同。 分桶列的多少取决于对“吞吐”和“并发”的一种权衡。 分桶列多数据分布的更加均匀适合大吞吐低并发的查询不适合高并发的单查询。 分桶列少适合高并发的点查询。 分桶数量理论上无上限但是要结合实际资源情况进行设置。 复合分区和单分区 复合分区既有分区又有分桶。 单分区只有分桶。
1.2.1 复合分区的选用场景 有时间或序值维度的可以使用复合分区。 需要对历史数据进行清理对N天前的数据进行清理或者保留N天的数据可以使用复合分区。 可以解决数据倾斜问题按天进行分区那么可能某天的数据量会很大那么可以调整分桶的数量来达到数据均衡分布的效果在选着分桶列时要选择数据量差异较大的列。 多列分区 在指定分区列时可以在Key中再指定一个字段作为分区列插入数据时会首先按照分区列的值依次进行比较