KingbaseES数据库水平分区技术—人大金仓

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

KingbaseES水平分区技术
什么是水平分区技术
水平分区:水平分区就是按元组进行分区,不同的元组可以分开保存,每个分区的列数相同。

水平分区就是将单个表基于选定的行分段为多个表,按照设定的边界值把数据行映射到不同的分区中。

其中多个表中的每一个表都具有相同的列,但每个分区的行相对对原来表有所减少。

对于大型数据库来说,其表的数据记录数量往往会在很短的时间内迅猛地增长。

有时候,难以对这样的庞大的数据集进行有效的管理,甚至SQL查询的性能和速度都会受到不利的影响。

数据库分区技术就应运而生了。

对表进行水平分区,有利于改善大型数据库的查询和读写性能,并简化数据库管理。

因此水平分区技术可以更好地满足企业级应用对大数据量处理的性能需求。

分区的基本思想是对大的数据集采用分而治之的策略,将其划分为多个现对较小的数据集,因此它比较适合于管理大规模的海量数据。

它主要是可以减少IO操作,把原来较大的IO流分散,我们只需要对我们要访问到的那片分区进行IO操作。

DBA可以通过DDL 语句操纵一个个的分区,而应用程序仍然可以访问整个表(也可以直接访问分区),而不必考虑分区的存在。

KingbaseES V7水平分区简介
KingbaseES V7目前支持三种水平分区方式,包括范围分区、列表分区和哈希分区。

范围分区:数据基于分区键值的范围分配。

每一个范围分区都是一个没有重叠的连续区间,范围的较低边界由前一范围的较高边界自动定义。

比如按工资范围来分区。

列表分区:数据分配由分区键的值列表定义(如果使用地区列作为分区键,则“North America”分区可能包含值“Canada”、“USA”和“Mexico”)。

可以定义一个特殊的“DEFAULT”分区,用于捕获未由任何列表显式定义的所有分区键值。

比如按员工性别来分区。

哈希分区:将哈希算法用于分区键以确定给定行的分区。

与其他两个数据分配方法不同,哈希分区不提供数据与分区之间的任何逻辑映射。

数据的随机性越大,数据的样本量越大,HASH分区后的效果越好,因为数据有可能更加平均的分散到每个bucket中。

说明:每种的场景都能找到与它相对应的分区方式来处理。

开发人员可以根据系统数据
分布的特征和应用需求,选用合适的分区方式,然后设置每个分区参数,来实现I/O操作的平衡、提高查询性能以及减小维护成本的目标。

KingbaseES水平分区的优点
●提高可用性
DBA 对一个大表进行数据整理、数据备份等维护性操作时,一般要持续很长时间才能完成。

在此期间,应用要么不能访问这些表,要么访问的速度会受到很大的影响。

在采用分区技术后,对整个大表的单个操作被分解为对多个分区的操作,缩短了每个操作的时间和对并发访问的影响。

在采用水平分区之后,单个分区的损坏不会影响其他分区上的查询和操作。

●提高性能
KingbaseES 支持对分区表进行剪枝优化。

根据SQL 语句的where 条件限制,排除不相关的分区,只在对应的分区上做扫描。

在多数情况下,查询的结果可以通过访问所有分区中的有限个子集获得,而不需要访问整个表。

对于这些查询来说,利用分区剪枝可以获得指数级的性能提升。

水平分区按元组(记录行)进行分区,不同的元组可以分开保存,每个分区的列数相同。

KingbaseES 支持水平范围分区和水平列表分区,两者的区别在于,前者的分区键值是属于一个连续的范围,而后者的分区键值是属于一个散列的列表。

传统的水平分区技术,分区表只支持分区表的局部索引,而全局索引在某些特定场景有着明显优于本地局部索引的性能优势,是数据库调优的重要手段。

如果想要通过本地局部索引保证所有分区上的取值唯一性,那么就必须以分区键作为前导列,这就限制了水平分区功能在一些特定场景的应用。

KingbaseES V7 提供了分区表全局索引技术,支持对数据集建立一个统一的索引,可以保证索引列的全局唯一性,拓展了水平分区的应用场景并提升了处理性能。

●减小维护代价
水平分区后的每个分区都是一个可以进行单独管理的对象,因而对数据量比较大表的维护管理转变为了对分区的维护,这样可以减小维护成本。

对单个子分区进行备份、还原,相对于大数据表而言,减少了花销在数据备份恢复的时间,有着良好的用户体验。

总结
KingbaseES支持范围、列表、哈希三种水平分区方式,可以提高对数据量比较大的表操作的性能,分区后对单个分区表的各种DML操作,可以大大提升操作性能,KingbaseES在国产数据库对加速大数据的处理中起了领导作用。

相关文档
最新文档