当前位置:网站首页>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条数据分配一个分片,间隔分区只作用于数值类型、日期类型(只包括年月日)和时间戳类型(包括年月日时分秒毫秒)。

原网站

版权声明
本文为[蜻蜓队镸]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_37004539/article/details/126158740