SAP HANA Admin – 表分区

SAP HANA Admin – 表分区


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

对表进行分区时,它的每个部分都包含不同的行集,并且可以基于不同的算法进行分区 – 散列分区、单级或多级分区。

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

分区修剪

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

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

负载均衡

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

尺寸限制

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

改进的 Delta 合并操作

在delta合并时,如果只修改了部分分区的数据,在delta合并中需要合并的分区较少。

查询的并行处理

使用分区,您可以并行运行多个查询,从而提高响应时间。

现在让我们讨论分区的类型。

单级分区

SAP HANA 系统中有不同类型的单级分区可用 –

  • 哈希分区
  • 循环分区
  • 范围分区

在哈希分区中,行平均分布以执行负载平衡。在此分区类型中,您不需要有关表内容的详细信息。

与散列分区相比,在循环分区中,行平均分配给每个分区,新行平均分配给每个分区。

要使用循环创建表的 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 

这将在ab列上创建 4 个分区,您需要至少指定一列。

范围分区

在范围分区中,您为某些值创建专用分区,并且您应该对分区列的表内容有深入的了解。

示例– 为每个日历月创建一个分区。

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, 2nd 从 10 到 20, 3rd 值 50 和 4th 对于所有其他值。

多级分区

在多级分区中,可以克服 HASH 和 RANGE 单级分区的限制,使用键列作为分区列。使用多级分区,您可以对不是主键的列进行分区。最常见的多级分区类型是HASH-Range Partitioning

在Hash-Range多级分区中,您在第一级实现Hash分区以实现负载均衡,在第二级实现Range分区以实现基于时间的分区。

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) 

觉得文章有用?

点个广告表达一下你的爱意吧 !😁