Sybase Adaptive Server Enterprise 15的数据分区
如何恰当地使用数据分区我们已经看到,ASE15的分区可以让数据库管理员更高效地执行必要的维护和管理任务,从而显著降低VLDB在ASE上运行的成本。我们也同样看到了分区技术如何极大地提高应用的性能,尤其是在ODSS环境中。
对表和索引进行分区非常简单。表可以在创建时或者以后随时进行更新。一旦分区后,写入表中的数据将按照设定的分区规则写盘,无论是插入、删除还是BCP导入均不例外。索引同样可以在创建时被分区,但一个已有的索引无法被分区。这需要删除索引然后利用分区进行索引重建。
数据库管理员可以在以下情况考虑使用前面提到过的三种语义分区方式:
范围分区 ——数据库管理员可以基于关键列中的数据范围指定数据在各分区上的存储位置。例如,数值1,2,3,4存储在分区1中,而5,6,7,8存储在分区2中,诸如此类。下面是利用范围分区方式基于date/time 列创建表的语法示例:
create table customer (ord_date datetime not null,
name varchar(20) not null,
address varchar(40) not null, other columns …)
partition by range (ord_date)
(ord_date1 values <= (3/31/05) on segment1,
ord_date2 values <= (6/30/05) on segment2,
ord_date3 values <= (9/30/05) on segment3
ord_date4 values <= (12/31/05) on segment4)
范围分区尤其对于那些持续更新、插入和删除,且某些字段中包含连续数据,例如用户号或订单/交易日期的表尤为有效。这样的表需要数据库管理员额外的维护和管理。这类表常用于决策支持系统,最适合使用范围分区。当交易仅仅发生在一个分区上的时候,数据库管理操作和DSS查询还可以访问其它分区。与此同时,数据库管理员必须保证交易活动的分区的分布统计值时刻更新,这样查询处理引擎就可以使用新的数据,这一点是非常重要的。正像我们所见的,当操作仅仅运行在一个单一分区上时,更新统计的时间是非常短的。
列表分区 —— 列表分区类似于范围分区,但这里实际被写入分区的数据是确定的。前文中的例子就是在包含有全球各地区数据的“地区”关键字段上建立列表分区。该列数据有没有排序,以及数据在分区上存储的顺序,都不影响列表分区存储数据。下面是利用列表分区方式创建表的语法示例:
create table nation (nationkey integer not null,name char(25) not null,
regionkey varchar(30) not null,comment varchar(152) not null)
on segment 1
partition by list (n_regionkey)
(region1 values ('Americas'),
region2 values ('Asia'),
region3 values ('Europe'),
region4 values ('Australia', 'Other') )
哈希分区 ——这种数据分区方式是根据在指定列上利用内部哈希算法计算的结果来决定数据存储到哪一个分区。这里不需要指定列表或数值的范围。如果列键包含唯一数据,或者数据重复度极小,哈希分区将在其所有分区上平衡数据存储。然而,如果有大量重复数值,分区将会“倾斜”,一些分区上的数据可能会比其它分区多。
哈希分区在要为大表建立很多分区,或者关键列中的数据没有排序的情况下尤为有用。它同时还可以配合查询处理引擎使得查询工作更为有效。
create table lineitem ( l_orderkey integer not null, l_partkey integer not null,
l_suppkey integer not null, l_linenumber integer not null, l_quantity double not
null, l_extendedprice double not null, other columns …)
partition by hash (l_orderkey, l_linenumber)
(litem_hash1 on segment1,
litem_hash2 on segment2,
litem_hash3 on segment3,
litem_hash4 on segment4 )
结论
作为ASE15一系列新特性中最受人瞩目的焦点,数据分区使得VLDB的管理和维护工作更加简易,同时显著提高了ASE的性能。更简单而有效的维护和管理降低了在ASE上运行VLDB的成本,同时在混合工作负载环境中的应用性能也得到了极大提升。
页:
[1]