Doris-数据分区

数据分区:即将大表划分为小表,数据分区主要有两个级别:Partition和Bucket(Tablet)。

Partition:逻辑分区,按照一定规则将表按照行进行划分,每个部分就是一个Partition。

Bucket:物理分区则,在物理上对每个Partition内的数据进行进一步的细分(按行)。分桶时,会选取一列,如Id,按照id的hashcode值%桶数,得到数据所在桶的位置。存储时,会创建文件夹对数据进行存储,文件夹的名字就是桶号。

Partition

Partition支持Range和List两种划分方式

Range(范围分区,单列分区):

PARTITION BY RANGE(data)

(

PATITION  p201701 VALUES LESS THAN(2017-02-01),

PATITION  p201702 VALUES LESS THAN(2017-03-01),【0201,0301)

PATITION  p201703 VALUES LESS THAN(2017-04-01),

)

Attention:分区的上界,前闭后开,当分区创建完成后,某个分区再被删除时,其他分区的范围并不受影响(分区空洞),但分区空洞可以通过创建新的分区进行补充。

Range(范围分区,多列分区):

PARTITION BY RANGE(`date`, `id`)
(
PARTITION `p201701_1000` VALUES LESS THAN ("2017-02-01", "1000"), #设置分区上界和id上界
PARTITION `p201702_2000` VALUES LESS THAN ("2017-03-01", "2000"),
PARTITION `p201703_all` VALUES LESS THAN ("2017-04-01") ,#没有指定时会按照默认值,同样遵守前闭后开原则
)

Attention:如果日期不在分界点上,可以只看日期,如果在分界点上,先比较日期,在比较后续字段的值,如果值大于分界点的值就落入前者分区,否则落入后者分区

List分区(单列分区):

支持BOOLEAN,TINYINT,SMALLINT,INT,BIGINT,LARGEINT.,CHAR...多种数据类型,当分区值为枚举值,只有当数据为目标分区枚举值其中之一时,才可以命中分区。

PARTITION BY List (”分区字段”)

(

PARTITION  “分区名” VALUES IN (“枚举值”,”枚举值”,”枚举值”)   

)

Attention: 当要插入的值与该分区中的值相同时,则插入该分区中

List分区(多列分区):

PARTITION BY List (”分区字段”,”分区字段”)

(

PARTITION  “分区名” VALUES IN ((“枚举值”,”枚举值”),(”枚举值”,”枚举值”))    

)

Attention:对于多列分区,只有所有字段的值都与该分区中的值相同时,才会插入该分区中

分桶

如果使用了分区,则DISTRIBUTED..描述的数据实在各个分区内划分规则,否则描述的时整张表的数据的划分规则。

Attention:

  1. 分桶可以时多列,但必须为KEY列,分桶列可以与分区列相同或不同
  2. 分桶列的选择实在查询吞吐和查询并发之间的一种权衡

如果选择多个分桶列,则经过Hash散列后,数据分布会更均匀

如果选择一个或少数分桶列,则数据分布较为集中

复合分区和单分区

复合分区:建表时不仅指定分区还会指定分桶

单分区:没有分区,只有分桶,此时Doris底层会将整张表作为一个分区

复合分区使用场景:

  1. 标中字段有时间维度或类似带有有序值的维度,可以以这类维度列作的分区列。
  2. 有删除历史数据的需求(比如仅保留最近N天的数据)可以通过删除除历史分区来达到目的。也可以通过在指定分区内发送DELETE语句进行数据出除
  3. 解决数据倾斜问题:每个分区可以单独指定分桶数量。如按天分区,当每天的数据量差异很大时,可以通过指定分区的分桶数,合理划分不同分区的数据,分桶列建议选择区分度大的列

PROPERTIES

在建表语句中用于设置表的属性参数

常用属性有:

  1. replication_num(分片副本数):用于指定每个Tablet的副本数量,提高数据安全性并且能够在Sql执行过程中提高在本地查询命中的概率。副本数量在运行时可以进行修改,最大副本数量取决于集群中独立IP的数量
  2. Storage_medium(存储介质):默认存储介质可以通过fe的配置文件指定,默认为HDD,如果指定为SSD,则数据初始存放在SSD上,在没有storage_cooldown_time的情况下,默认30填后,数据会从SSD上自动迁移至HDD上,若指定,则按照指定时间迁移。
  3. Storage_cooldown_time(热数据冷却时间)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/730049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flink重温笔记(十):Flink 高级 API 开发——flink 四大基石之 State(涉及Checkpoint)

Flink学习笔记 前言:今天是学习 flink 的第 10 天啦!学习了 flink 四大基石之 State (状态),主要是解决大数据领域增量计算的效果,能够保存已经计算过的结果数据状态!重点学习了 state 的类型划…

相对于 Linux,Windows Server 存在的意义是什么?

相对于 Linux,Windows Server 存在的意义是什么? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Linux 的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给…

新版AndroidStudio的Gradle窗口显示task list not built 问题解决

在使用新版AndroidStudio时,会出现,Task List not built 的问题。如果你记得task的名字,当然可以 直接通过命令 gradle taskname 或者 ./gradlew taskName直接执行即可,但是若是记不住,还是把这个任务构建处理比较好用…

借助工具优化开发流程,提升开发体验

背景 最近在做一个demo,只有一个html页面,需要开启一个https web server,以此来实现在浏览器中访问。 改造前 改造前,每次修改文件保存后都要刷新一下浏览器。 如果只是短时间,每次修改后手动刷新浏览器也还行。主要…

C++:Stack和Queue的模拟实现

创作不易,感谢三连! 一、容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。 就如同是电源适配器将不适用的交流电…

day04-Maven

一、初识 Maven Maven 是 Apache 旗下的一个开源项目,是一款用于管理和构建 java 项目的工具。 官网:https://maven.apache.org/ Maven的作用 依赖管理(方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题)统一项目…

想开发苹果群控软件?先了解这些代码!

随着智能设备的普及,群控软件的需求日益增加,特别是针对苹果设备的群控软件,因其出色的性能和广泛的用户基础,受到了开发者们的青睐。 然而,开发一款功能强大的苹果群控软件并非易事,需要深入了解苹果的开…

获取C语言语句对应的汇编码和机器指令

借助IDE的调试功能 以CodeBlocks为例,先设置断点,然后点击红色三角形调试。 然后选择Debug➡ Debugging Windows➡Disassembly 就可以看到了 使用命令行 在工程文件中,一般可以找到一个.o文件。如果没有,可以先在program.c的目录下…

掌握java中继承

目录 1.概念: 2.使用: 3.super关键字 4.子类构造方法 5.super和this关键字 6.初始化时代码块的执行顺序 7.继承的方式 8.final关键字 1.概念: 是面向对象程序设计代码可以重复使用的重要手段,允许程序员在保持原有类特性的…

git入门到精通

第3章 Git常用命令 3.1 设置用户签名 3.2 初始化本地库 3.3 查看本地 状态 3.3.1 首次查看(工作区没有任何文件) 3.3.2 新增文件(hello.txt) 3.3.3 再次查者(检測到末追踪的文件) 3.4添加暫存区 3…

java常用排序算法——冒泡排序,选择排序概述

前言: 开始接触算法了,记录下心得。打好基础,daydayup! 算法 算法是指解决某个实际问题的过程和方法 排序算法 排序算法指给混乱数组排序的算法。常见的有:冒泡排序,选择排序 冒泡排序: 冒泡排序指在数组…

python界面开发 - Label 提示框

文章目录 1. Label 提示框1.1. 显示文本1.2. 修改Label的文本1.2.1. 方式1:通过label.config()1.2.2. 方式2:通过 label["text"] 属性进行修改 1.3. 设置背景图片 2. Tkinter 开发3. python图形界面开发3.1. Python图形界面开发——Tkinter3.2…

简单认识Linux

今天带大家简单认识一下Linux,它和我们日常用的Windows有什么不同呢? Linux介绍 Linux内核&发行版 Linux内核版本 内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与…

基于java+springboot+vue实现的宠物健康咨询系统(文末源码+Lw)23-206

摘 要 本宠物健康咨询系统分为管理员还有用户两个权限,管理员可以管理用户的基本信息内容,可以管理公告信息以及宠物健康知识信息,能够与用户进行相互交流等操作,用户可以查看宠物健康知识信息,可以查看公告以及查看…

说说flexbox(弹性盒布局模型)及适用场景?

文章目录 一、是什么二、属性flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-contentorderflex-growflex-basisflexalign-self 三、应用场景参考文献 一、是什么 Flexible Box 简称 flex,意为”弹性布局”,可以简便、完整、响应式地…

【Bugs】java: 错误: 不支持发行版本 xx

文章目录 报错场景:报错原因:解决方法: 报错场景: IDEA运行Java项目报错,点击运行之后,IDEA在编译代码的时候就出现报错: 报错类型一:java: 错误: 不支持发行版本 21报错类型二&am…

python72-Python的函数入门,为函数提供文档

之前介绍过可以使用Python内置的help()函数查看其他函数的帮助文档,我们也经常通过help()函数查看指定函数的帮助信息,这对于Python开发者来说非常重要。 我们还可以为函数编写说明文档一只要把一段字符串放在函数声明之后、函数体之前,这段字符串将被作…

SAP金江、阎韶华、雷凡将出席“第四届ISIG-RPA、低代码、流程挖掘三大峰会

3月16日,第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导,企智未来科技(RPA中国、AIGC开放社区、LowCode低码时代)主办。大会旨在聚合每一位产业成员的力量,深入探索R…

【C语言】InfiniBand驱动mlx4_init和mlx4_cleanup

一、中文注释 Linux内核模块的初始化和清理过程,针对一个称为mlx4的网络设备驱动。以下是代码的逐行中文注释: static int __init mlx4_init(void) {int ret;if (mlx4_verify_params())return -EINVAL; // 检查设备参数是否有效,无效则返回…

如何做好【沟通】管理

目录 管理的定义 管理的四大职能: 四共团队: 领导力: 沟通的四种类型听、说、读、写(计划、报告) 沟通四原则 思维框架:结构树报告 管理的定义 彼得.德鲁克:管理通过他人去完成任务的学…