SAP HANA管理员 - 表分区

使用分区,您可以将列存储表拆分为多主机系统中的较小表.您甚至可以使用分区将表格划分为更小,更易于管理的部分.可以使用DML SQL语句进行分区.

当表被分区时,它包含每个部分的不同行集,并且可以基于不同的算法进行分区 - 哈希分区,单级或多级分区.

以下是使用表分区的优点;

分区修剪

你可以确定是否可以在特定分区中分析查询.使用此方法,您可以减少系统负载,从而缩短响应时间.

示例 : 基于年份对表进行分区时,将执行查询以分析特定年份的数据.您可以使用特定分区,从而提高查询性能.

负载平衡

您可以在多个主机上划分单个分区,因此查询不是由单个服务器处理,可以在托管表分区的所有服务器上实现更好的负载平衡.

大小限制

在列存储表中,最大值可输入的行数约为20亿.您可以通过在多个分区上分配列表的行来解决这个问题,因此每个分区的大小限制增加到20亿.

改进的Delta Merge操作

在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)