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.hqwc.cn/news/522030.html

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

相关文章

Java开发与配置用到的各类中间件官网

开发配置时用到了一些官网地址,记录一下。 activemq 官网:ActiveMQ elk 官网:Elasticsearch 平台 — 大规模查找实时答案 | Elastic nginx 官网:nginx maven 官网:Maven – Welcome to Apache Maven nexus 官网&a…

MySQL-----视图

一 视图 ▶ 介绍 视图view是一个虚拟表,非真实存在,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用视图名称即可获取结果集,并可以将其当作表来使用。 数据库中存放了视图的定义&…

修复 因 fstab 中UUID 错误导致系统无法正常工作的问题

操作系统: PVE 8.0 /debian 12 (bookworm) 问题症状:可以正常启动进入系统,但是系统盘以只读方式挂载 问题原因:/etc/fstab 中引导区的UUID 被错误修改导致 解决方法: 重启系统,在…

CPU设计实战-加载和存储指令(2)

目录 一 ll和sc指令说明 二 ll和sc指令的实现 1 llbit寄存器 2 译码阶段 3 访存阶段 4 Load相关问题 5 流水线在取指阶段暂停 本章介绍两个比较特殊的加载存储指令ll和sc,这两个指令的存在用于实现信号量机制。 信号量机制:在多线程中为了保证某个…

项目的搭建与配置

vue create calendar_pro 选择如下配置选项 安装 vue3 支持 vue add vue-next package.json 关闭 eslint 检测。 vue.config.js 配置跨域同源策略。 const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServe…

MyBatis-Plus如何娴熟运用乐观锁

欢迎来到我的博客,代码的世界里,每一行都是一个故事 MyBatis-Plus如何娴熟运用乐观锁 前言乐观锁的基本概念基本概念和原理:为何乐观锁是解决并发问题的有效手段: MyBatis-Plus中乐观锁的支持1. Version 注解:2. 配置乐…

深入浅出Redis(八):Redis的集群模式

引言 Redis是一款优秀的键值对、内存非关系型数据库,单机节点下的Redis存在无法保证高可用、容量不足等问题 上篇文章介绍的哨兵主要能够保证主从架构下Redis的可用性,但是仍然存在容量不足、推举新的主节点时不能访问Redis的问题,集群可水…

开发Chrome扩展插件

1.首先开发谷歌chrome扩展插件,没有严格的项目结构目录,但是需要保证里面有一个mainfest.json文件 (必不可少的文件)。在这个文件里有三个属性必不可少:name、version、mainfest_version; // 清单文件的版本,这个必须写…

jmap-各种option参数说明

基本情况 jmap(JVM Memory Map):作用一方面是获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况、堆中对象的统计信息…

sheng的学习笔记-AI-多分类学习:ECOC,softmax

目录:sheng的学习笔记-AI目录-CSDN博客 基本术语: 若我们欲预测的是离散值,例如“好瓜”“坏瓜”,此类学习任务称为“分类”(classification); 若欲预测的是连续值,例如西瓜成熟度0.95、0.37,…

蓝桥杯:矩形总面积(Java)

目录 问题描述输入格式输出格式代码实现 问题描述 平面上有个两个矩形R1和R2,它们各边都与坐标轴平行。设(x1, y1)和(x2 ,y2)依次是R1的左下角和右上角坐标,(x3, y3)和(x4, y4)依次是R2的左下角和右上角坐标,请你计算R1和R2的总面积是多少? …

Jmeter(GUI模式)详细教程

前些天,领导让我做接口的压力测试。What??我从未接触过这方面,什么都不知道,一脸蒙。于是我从学习jmeter开始入手。 现在记录下来jmeter的使用步骤,希望能对大家有所帮助。 一、安装Jmeter 1、电脑安装J…