GBase 8a
其他
文章

Gbase8a分区表的使用

发表于2024-09-30 16:52:47205次浏览5个评论

通常情况下,同一张表的数据在物理层面都是存放在一起的。随着业务增长,当同一张表的数据量过大时,会带来管理上的不便。而分区特性可以将一张表从物理层面根据一定的规则将数据划分为多个分区,多个分区可以单独管理,甚至存放在不同的磁盘/文件系统上,提升效率。 分区表的优点: 数据可以跨目录存储,适合存储大量数据。 数据的管理非常方便,以分区为单位操作数据,不会影响其他分区的正常运行。 数据查询上在某些条件可以利用分区裁剪(partition pruning)特性,将搜索范围快速定位到特性分区,提升查询性能。    对于应用来说,表依然是一个逻辑整体,但数据库可以针对不同的数据分区独立执行管理操作,不影响其他分区的运、行。而数据划分的规则即称为分区函数,数据写入表时,会根据运算结果决定写入哪个分区。 

GBase 8a目前支持的分区有 RANGE 分区、LIST 分区、HASH 分区、KEY 分区。 

RANGE 分区表和 LIST 分区表支持子分区,子分区只可以是 HASH 分区或者 KEY分区。 分区管理目前支持创建分区表、删除分区表、分区表添加分区、分区表删除分区、分区表 truncate 指定分区数据、分区表重命名指定分区名。分区表功能各版本支持情况有差异,各项功能有使用限制,具体的操作语法和使用限制需参考手册中对应章节的详细说明。创建分区表支持分布、复制属性 

RANGE 分区: 范围分区。按照从小到大自定义多个范围作为分区,各分区(范围)之间无重叠区域,需要入库的表数据按指定的分区条件计算后,存储在对应范围的分区中。对于不在所有分区范围内的数据将无法保存入库。如果入库数据中对应分区条件有 NULL 值,RANGE 分区表会将 NULL 值插入第一个分区中。 RANGE 分区支持 HASH 子分区和 KEY 子分区,即可将 RANGE 分区表的每个分区内的数据再根据 HASH 或者 KEY 分区算法进行细分,将数据存储到对应的子分区内。RANGE 分区表各分区的子分区数量相同。 

LIST 分区: 列表分区。自定义多个值列表作为分区,各分区(值列表)之间无重叠值,每个分区(值列表)内不需要重复值,需要入库的表数据按指定的分区条件计算后,存储在对应值列表的分区中。对于不在所有分区值列表内的数据将无法保存入库。 如果入库数据对应分区条件有 NULL 值,则 LIST 分区需包含 NULL 值,否则 NULL值插入报错。 LIST 分区支持 HASH 子分区和 KEY 子分区,即可将 LIST 分区表的每个分区内的数据再根据 HASH 或者 KEY 分区算法进行细分,将数据存储到对应的子分区内。LIST 分区表各分区的子分区数量相同。 

HASH分区: HASH 分区。自定义分区数量,需要入库的表数据按指定的分区条件计算后,使用 HASH 算法,将数据尽可能平均的存储在各分区中。 HASH 分区不支持子分区。 

KEY分区: KEY 分区。自定义分区数量,需要入库的表数据按指定的分区条件计算后,使用内部固定 HASH 算法,将数据尽可能平均的存储在各分区中。 KEY 分区不支持子分区。 KEY 分区使用的是内部固定 HASH 算法,KEY 分区表与 HASH 分区表的不同:  分区条件中 KEY 支持多个列的列表,HASH 只支持一个列  分区条件中 KEY 不支持函数和表达式,HASH 支持一个列的函数和表达式      分区条件中 KEY 支持的列的类型更多一些 

 

评论

登录后才可以发表评论
用户头像
levvel发表于 9个月前
来报个到
崔哥发表于 8个月前
给你点个赞
GBase用户50826发表于 4个月前
你好,请问可以做到自动化分区吗,按照日期的推进
GBase用户51884发表于 2个月前
学习了
沉香发表于 2个月前
学会了