日期:2014-05-16 浏览次数:20772 次
SAP HANA HDB 分区管理:
使用SAP HANA数据库的分区特性,可以把列存储的大数据表水平分割存储在不同的分区中。
SAP HANA的分区只能对列存储表使用,如果对行存储的表使用会出现语法错误。
错误信息:SAP DBTech JDBC: [257]: sql syntax error: not supported for row table
SAP HANA的分区表可以包含多个分区,每个分区都是独立的。
分区的有点:
负载均衡:使用表分区,各个分区的个体数据可以分布存储在不同的分布服务器中。对一张表进行查询时,不是由单一的服务器进行处理,而是分解到所有关联的主分区的服务器进行并行处理。同时数据分散到各个分区中,减少数据损坏。
并行性:操作并行性,操作并行使用几个执行线程对每张表。对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快
分区修剪:查询分析,看看是否匹配给定的分区规格一个表。如果找到匹配,它有可能确定的实际分区(保存数据问题)。使用这种方法可以减少系统的负载,响应时间也更好的。
明确的分区处理:SAP HANA数据库会主动控制分区,例如:增加分区来存储为即将到来的一个月的数据。
限制:一个非分区表不能存储超过2亿行数据,通过使用分区,这限制可以克服把表由分布到几个分区进行存储。但请注意,每个分区不能超过2亿行数据。
性能: SAP HANA数据库增量合并的性能依赖于数据库主索引的大小,如果数据只有在一部分的分区中被修改,那么会有很少的一部分数据需要做增量合并,这样对数据库的性能更好。
修改-删除分区:
ALTER TABLE mytab ADD PARTITION OTHERS
ALTER TABLE mytab DROP PARTITION OTHERS
查看表分区的情况:
select * from sys.M_CS_PARTITIONS where table_name = tablename
SAP HANA 提供的分区类型:
单级分区(single-level partitioning): HASH, Range,Round-Robin.
---------------------------------------------------------------------------
范围分区(Range partitioning):
范围分区可以用来创建一个专用的分区,范围可以是一个定值也可以使一个范围。您可以选择把每季度的数据放在一个分区内,也可为一年中每个月份都创建一个分区。
另外还可以选择使用范围分区为主动管理的分区表,分区可以被创建或删除,如:数据库可以创建一个分区为即将到来的一个月,新的数据将被插入到新的分区中。
如果插入一条数据没有匹配上任何一个分区的条件,SAP HANA会反馈一个错误信息,为了避免这种情况,在创建分区时,需要创建一个剩余分区(rest partition).
注意:范围分区不适合负荷分配。
范围分区对数据类型的限制:仅仅对字符串,整数,日期是可以使用的。
语法:进行分区的字段必须是主键的一部分。
创建整数类型的分区:INT
CREATE COLUMN TABLE mytab (a INT, b INT, c INT, PRIMARY KEY (a,b)) PARTITION BY RANGE (a)
(PARTITION 1 <= VALUES < 5,
PARTITION 5 <= VALUES < 20,
PARTITION VALUE = 44,
PARTITION OTHERS)
创建一个范围的分区用: PARTITION <= VALUES <
创建一个定值的分区用: PARTITION VALUE =
创建一个剩余分区用: PARTITION OTHERS
删除一个范围的分区用:alter table mytab drop partition 1 <= VALUES < 5
删除一个定值的分区用:alter table mytab2 drop partition VALUE = 44
删除一个剩余分区用: &nb