使用分区,您可以将列存储表拆分为多主机系统中的较小表.您甚至可以使用分区将表格划分为更小,更易于管理的部分.可以使用DML SQL语句进行分区.
当表被分区时,它包含每个部分的不同行集,并且可以基于不同的算法进行分区 - 哈希分区,单级或多级分区.
以下是使用表分区的优点;
你可以确定是否可以在特定分区中分析查询.使用此方法,您可以减少系统负载,从而缩短响应时间.
示例 : 基于年份对表进行分区时,将执行查询以分析特定年份的数据.您可以使用特定分区,从而提高查询性能.
您可以在多个主机上划分单个分区,因此查询不是由单个服务器处理,可以在托管表分区的所有服务器上实现更好的负载平衡.
在列存储表中,最大值可输入的行数约为20亿.您可以通过在多个分区上分配列表的行来解决这个问题,因此每个分区的大小限制增加到20亿.
在delta合并期间,如果仅为某些分区修改数据,则需要在delta merge中合并较少的分区.
使用分区,您可以并行运行多个查询,从而缩短响应时间.
现在让我们讨论分区的类型.
SAP HANA系统中有不同类型的单级分区 :
哈希分区
循环分区
范围分区
在散列分区中,行均匀分布以执行负载平衡.您不需要此分区类型中有关表内容的详细信息.
与散列分区相比,在循环分区中,行均匀分配到每个分区,并且新行均匀分配每个分区.
要使用Round Robin创建表的4个分区,可以使用以下SQL查询.不应定义主键.
CREATE COLUMN TABLE TABLENAME (a INT, b INT, c INT) PARTITION BY ROUNDROBIN PARTITIONS 4
此命令将创建一个表的4个分区.
CREATE COLUMN TABLE Table_Name (a INT, b INT, c INT, PRIMARY KEY (a,b)) PARTITION BY HASH (a, b) PARTITIONS 4
这将在列上创建4个分区 a 和 b ,您需要指定至少一列.
在范围分区中,您可以为某些值创建专用分区,并且您应该对表内容有深入的了解,以便对列进行分区.
示例 : 为每个日历月创建一个分区.
CREATE COLUMN TABLE TABLE_NAME (a INT, b INT, c INT, PRIMARY KEY (a,b)) PARTITION BY RANGE (a) (PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20, PARTITION VALUE = 50, PARTITION OTHERS)
这将创建4个分区,一个用于分区范围1到10,2个 nd 从10到20,3 rd 表示值50,而4 th 表示所有其他值.
在多级分区中,您可以克服HASH和RANGE单级分区的限制,以使用键列作为分区列.使用多级分区,您可以对不是主键的列进行分区.最常见的多级分区类型是 HASH-Range Partitioning .
在Hash-Range多级分区中,您在第一级实现Hash分区以实现负载平衡在第二级进行范围分区以实现基于时间的分区.
CREATE COLUMN TABLE Table_name (a INT, b INT, c INT, PRIMARY KEY (a,b)) PARTITION BY HASH (a, b) PARTITIONS 4, RANGE (c) (PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20)
您可以使用循环分区而不是在第一级使用散列分区,它被称为循环范围多级分区.
CREATE COLUMN TABLE Table_name (a INT, b INT, c INT) PARTITION BY ROUNDROBIN PARTITIONS 4, RANGE (c) (PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20)