Apache Doris (十七) :Doris分区和分桶3-分桶及建议

​​​目录

一、分桶Bucket

​​​​​​​二、分区和分桶数量和数据量的建议


进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道,获取高质量博客内容!


一、分桶Bucket

Doris数据表存储中,如果有分区,在插入数据时,数据会按照对应规则匹配写往对应的分区中,如果表除了有分区还有分桶,那么数据在写入某个分区后,还会根据分桶规则将数据写入不同的分桶(Tablet),目前分桶Bucekt目前仅支持Hash分桶,即根据对应列的hash值将数据划分成不同的分桶(Tablet)。

建议采用区分度大的列做分桶, 避免出现数据倾斜,为方便数据恢复, 建议单个 bucket 的 size 不要太大, 保持在 10GB 以内, 所以建表或增加 partition 时请合理考虑 bucket 数目, 其中不同 partition 可指定不同的 buckets 数。

建表时创建分桶表只需要在建表语句中加入distrubution_desc即可:

...
DISTRIBUTED BY HASH(`id`) BUCKETS 16
...

之前创建的所有分区表都进行了分桶,使用Bucket分桶有以下几个注意点:

  1. 如果使用了 Partition,则 DISTRIBUTED ... 语句描述的是数据在各个分区内的划分规则。如果不使用 Partition,则描述的是对整个表的数据的划分规则。
  2. 分桶列可以是多列,Aggregate 和 Unique 模型必须为 Key 列,Duplicate 模型可以是 key 列和 value 列。分桶列可以和 Partition 列相同或不同。
  3. 分桶列的选择,是在”查询吞吐” 和 “查询并发” 之间的一种权衡:
    1. 如果选择多个分桶列,则数据分布更均匀。如果一个查询条件不包含所有分桶列的等值条件,那么该查询会触发所有分桶同时扫描,这样查询的吞吐会增加,单个查询的延迟随之降低。这个方式适合大吞吐低并发的查询场景。
    2. 如果仅选择一个或少数分桶列,则对应的点查询可以仅触发一个分桶扫描。此时,当多个点查询并发时,这些查询有较大的概率分别触发不同的分桶扫描,各个查询之间的IO影响较小(尤其当不同桶分布在不同磁盘上时),所以这种方式适合高并发的点查询场景。

     4. 分桶的数量理论上没有上限。

​​​​​​​二、分区和分桶数量和数据量的建议

  1. 一个表必须指定分桶列,但可以不指定分区
  2. 对于分区表,可以在之后的使用过程中对分区进行增删操作,而对于无分区的表,之后不能再进行增加分区等操作。
  3. 分区列和分桶列在表创建之后不可更改,既不能更改分区和分桶列的类型,也不能对这些列进行任何增删操作。所以建议在建表前,先确认使用方式来进行合理的建表。
  4. 一个表的 Tablet 总数量等于 (Partition num * Bucket num)。
  5. 一个表的 Tablet 数量,在不考虑扩容的情况下,推荐略多于整个集群的磁盘数量。
  6. 单个 Tablet 的数据量理论上没有上下界,但建议在 1G - 10G 的范围内。如果单个 Tablet 数据量过小,则数据的聚合效果不佳,且元数据管理压力大。如果数据量过大,则不利于副本的迁移、补齐,且会增加 Schema Change 或者 Rollup 操作失败重试的代价(这些操作失败重试的粒度是 Tablet)。
  7. 当 Tablet 的数据量原则和数量原则冲突时,建议优先考虑数据量原则。
  8. 在建表时,每个分区的 Bucket 数量统一指定。但是在动态增加分区时(ADD PARTITION),可以单独指定新分区的 Bucket 数量。可以利用这个功能方便的应对数据缩小或膨胀。
  9. 一个 Partition 的 Bucket 数量一旦指定,不可更改。所以在确定 Bucket 数量时,需要预先考虑集群扩容的情况。比如当前只有 3 台 host,每台 host 有 1 块盘。如果 Bucket 的数量只设置为 3 或更小,那么后期即使再增加机器,也不能提高并发度。
  10. 举一些例子:假设在有10台BE,每台BE一块磁盘的情况下。如果一个表总大小为 500MB,则可以考虑4-8个tablet分片。5GB:8-16个tablet分片。50GB:32个tablet分片。500GB:建议分区,每个分区大小在 50GB 左右,每个分区16-32个tablet分片。5TB:建议分区,每个分区大小在 50GB 左右,每个分区16-32个tablet分片。

注:表的数据量可以通过 SHOW DATA 命令查看,结果除以副本数,即表的数据量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用docker搭建mysql集群

一、技术架构 1、架构图 2、解说 mysql_1、mysql_2、mysql_3是一组主从模式,同理mysql_4、mysql_5、mysql_6也是一组主从模式从上面的图可以看出mysql_1和mysql_4是主节点,可以进行增删改查操作,但是子几点只能查询操作如果mysql_1节点出现问题了,有mysql_4节点组…

SDK和API是什么?SDK和API的区别与联系

目录 💌 SDK和API是什么? SDK API 💌 SDK和API的区别 💌 该如何选择 API 和 SDK 对接? 💌 SDK和API是什么? SDK SDK的概念:软件开发工具包(全称:Softwa…

黑盟菜鸟剪辑短视频助手是什么

今天我们来讲一下视频综合处理功能,首先我们来打开软件主界面,通过模块化功能合集视频综合处理进入我们的这个功能。首先我们来看一下功能的布局,左边是导入视频的地方,右边是功能区,这里总共包括 32 种功能&#xff0…

计算机基础--->数据结构(6)【AVL树(平衡二叉树)】

文章目录 AVL(平衡二叉树)树性质AVL树的操作(Java)节点的创建AVL树的插入1.判断平衡2.保持树的平衡3.判断是否AVL树4.删除节点 全部代码 AVL(平衡二叉树)树 平衡二叉树是一种特殊的二叉搜索树,他…

【nav_msgs/Path.h发布路径】

#include <nav_msgs/Path.h> 是一个 ROS (Robot Operating System) 中的包含文件。它是用于包含 nav_msgs/Path 消息类型的头文件,这是一个标准的 ROS 消息类型。 nav_msgs/Path 消息类型常用于机器人导航系统中,以表示路径。这种路径通常由一系列的位置点组成,这些点…

解决:yarn 无法加载文件 “C:\Users\admin\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本“ 的问题

1、问题描述&#xff1a; 其一、报错的整体代码为&#xff1a; yarn : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\yarn.ps1&#xff0c;因为在此系统上禁止运行脚本 // 整体的报错代码为 &#xff1a; yarn : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\yar…

Linux环境搭建(三)— 搭建数据库服务器

linux &#xff08;ubuntu&#xff09;安装mysql 和环境配置 一、安装MySql二、配置环境三、外网访问四、重置密码五、卸载 写在前面&#xff1a; 本文默认你的Linux系统已经安装vim&#xff0c;yum等&#xff0c;如你使用的是一个全新的操作系统&#xff0c;移步上一篇开始配置…

迪赛智慧数——柱状图(象形动态图):高考填报专业考虑的因素

效果图 填报志愿是高考后的一大重要环节&#xff0c;你的职业生涯就在这里起航了。那么&#xff0c;应该怎么填报志愿呢&#xff1f;高考填报专业考虑的因素很多&#xff0c;过半的人会考虑专业就业前景及薪资&#xff0c;其次是个人兴趣和是否为双一流建设学科。 数据源&…

基于深度学习的高精度动物园动物检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度动物园动物&#xff08;水牛、斑马、大象、水豚、海龟、猫、奶牛、鹿、狗、火烈鸟、长颈鹿、捷豹、袋鼠、狮子、鹦鹉、企鹅、犀牛、羊、老虎&#xff09;检测识别系统可用于日常生活中或野外来检测与定位动物园动物&#xff0c;利用深度学…

【算法与数据结构】541、LeetCode反转字符串 II

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题自己写了一个swap函数&#xff0c;用来反转字符串&#xff0c;也可以用库函数reverse。然后是用in…

mac上使用brew安装mysql5.7

使用Homebrew进行MySQL数据库的安装需要MacOS系统中已经安装了相关环境 1.查询软件信息 首先使用search命令搜索MySQL数据库完整名称&#xff1a; brew search mysql可以看到5.7版本的MySQL数据库完整名称是mysql5.7 2. 执行安装命令 使用install命令进行软件安装&#xf…

基于单片机电子密码锁射频卡识别指纹门禁密码锁系统的设计与实现

功能介绍 通过指纹进行开锁或者是按键输入当前的密码&#xff0c;修改密码&#xff0c;对IC卡可以进行注册&#xff0c;删除。当有RFID卡进入到读卡器的读卡范围内时&#xff0c;则会自动读取卡序列号&#xff0c;单片机根据卡的序列号对卡进行判断。若该卡是有效卡&#xff0c…

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart)

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

瑞吉外卖-Day02

title: 瑞吉外卖-Day02 abbrlink: ‘1’ date: 2023-04-1 19:30:00 瑞吉外卖-Day02 课程内容 完善登录功能新增员工员工信息分页查询启用/禁用员工账号编辑员工信息 分析前端页面效果是如何实现的 为什么点击左边 右边会根着变化 [外链图片转存失败,源站可能有防盗链机制…

Neo4J 特性CQL语句,函数,Springboot集成

Neo4J Neo4J Neo4J一、Neo4J相关介绍1.为什么需要图数据库方案1&#xff1a;Google方案2&#xff1a;Facebook 2.特性和优势3.什么是Neo4j4.Neo4j数据模型图论基础属性图模型Neo4j的构建元素 5.软件安装 二、CQL语句1.CQL简介2.CREATE 命令3.MATCH 命令4.RETURN 子句5.MATCH和R…

FastDFS【FastDFS环境搭建_Linux、FastDFS指令、复习】(二)-全面详解(学习总结---从入门到深化)

目录 FastDFS环境搭建_Linux FastDFS指令 复习&#xff1a; FastDFS环境搭建_Linux 下载安装gcc 安装方式为yum安装&#xff08;需网络&#xff09;&#xff1a; yum install gcc-c perl-devel pcre-devel openssl-devel zlib-devel wget 下载安装FastDFS wget https:/…

vue3 异步组件

vue3中使用异步组件 vue3中使用异步组件可以解决两个问题&#xff1a; 1.提升性能&#xff08;类似于懒加载&#xff09; 2.分包 下载插件 npm i vueuse/core -S 1.提升性能&#xff08;懒加载&#xff09; 父组件 <template><div><h1>异步组件</h1&g…

【计算机视觉】对比学习综述(自己的一些理解)

对比loss 对比学习的 loss&#xff08;InfoNCE&#xff09;即以最 大化互信息为目标推导而来。其核心是通过计算样本表示间的距离&#xff0c;拉近正样本&#xff0c; 拉远负样本&#xff0c;因而训练得到的模型能够区分正负例。 具体做法为&#xff1a;对一个 batch 输入的图…

Matlab绘图系列教程-Matlab 34 种绘图函数示例(上)

Matlab绘图系列教程&#xff1a;揭秘高质量科学图表的绘制与优化 文章目录 Matlab绘图系列教程&#xff1a;揭秘高质量科学图表的绘制与优化第一部分&#xff1a;入门指南1.1 简介关于本教程的目的与范围Matlab绘图在科学研究中的重要性 1.2 准备工作安装Matlab及其工具箱 1.3 …

探索Python条件语句的奇妙世界:解密逻辑与控制流

文章目录 前言if 语句if ... else ...多重判断&#xff08;if ... elif ... else...&#xff09;if 嵌套猜数字游戏三目运算符 前言 Python的条件语句用来根据特定的条件决定程序的执行流程。它允许程序根据条件的真假执行不同的代码块&#xff0c;从而实现不同情况下的不同操…