当前位置:网站首页>GBase 8s分片技术介绍
GBase 8s分片技术介绍
2022-08-11 05:21:00 【蜻蜓队镸】
分片的概念和分类
分片是数据表和索引上的一项技术,通常一张表的数据存放在一个dbspace上。下面先讲讲分片的好处,为什么需要分片,第一,假设一张表上同时有很多的索引,当数据量变得很大时,索引的层数也随之增加,因此定位你所查找的记录时,所访问的页面就会相应地增加,SQL的性能就会因为数据量的逐渐变大而变慢;第二,假设有一张表存放了一年的数据,这个表上没有任何的索引,但是大多数人都是访问最近一个月的数据,由于没有索引,那么每个更新或者查询操作都需要去查看全年的数据,性能肯定不会好;第三,假设需要在一张表上做统计的操作,需要扫描整张表的信息,这个统计操作没有索引可以使用,索引对这个统计操作也没有任何的帮助,这类操作肯定很慢。这些问题在实际的使用中时很常见的,在GBase 8s中通过数据分片可以解决这些问题。
另外一个分片的原因时为了解决数据存储上限的问题。
在GBase 8s中,分片有两种形式,一种是和列的值没有关系,另一种是和列的值有关系。第一种称做轮循方式的分片,简单来说,就是假设你的表存放在10个分区上,那么插入的第1条记录将存放在第1个分区上,第2条记录存放在第2个分区上,以此类推,第11条记录存放在第一个分区上,因此最终的结果是每个分区上存放的记录是相同的;第二种分片技术是指按一个或者多个列的值的不同,将每个记录放在相对应的分区上。第二种分片的技术又细分为按表达式分区,按列表分区、按间隔分区。
表达式分区是指在创建表时指定了一个分变的表达式,在插入或者更新数据时,会去计算这个表达式的值,如果满足表达式中的条件,就把这条记录存放在和表达式相关联的分区中。在分片的表达式中可以有多个列,可以使用and和or操作符。Oracle的哈希(hash)分区是表达式分区的一个子集。
列表分区是指基于列表去判断将记录存放在对应的分区中,列表中的值和一个列的值是相关联的。
间隔分区是指每隔一个时间段或每隔N条数据分配一个分片,间隔分区只作用于数值类型、日期类型(只包括年月日)和时间戳类型(包括年月日时分秒毫秒)。
边栏推荐
猜你喜欢
随机推荐
Laravel5.7反序列化
若依分离版—增加通知公告预览功能
C语言----输出格式控制串
Error in render: “TypeError: Cannot read properties of undefined (reading ‘kingKongList‘)“
C language learning record--variable basic type and memory size
关于修改挂载到宿主机上的mysql配置文件不生效这件事
数组:一个存取数字的魔盒
使用TD-workbench管理tDengine数据库数据
gradle-wrapper.jar description
Dos命令
mysql基本概念之事务
C - file operations fseek () function, ftell, rewind, rounding
使用Go语言开发的低代码应用引擎
分布式日志存储架构代码实践
数组的相关方法及使用
《现代密码学》学习笔记——第三章 分组密码 [三]分组密码的运行模式
DOM破坏
xss.haozi靶场通关
正则(三剑客和文本处理工具)
工具窗口永远置顶