Posted on 2010-04-15 23:47
Prayer 阅读(316)
评论(0) 编辑 收藏 引用 所属分类:
DB2
DB2 V8.2(及之前版本)的一些技术允许将数据拆分成更小的“块(chunk)”,以获得更大的查询并行度,消除查询中出现的分区,并帮助提高性能。如前面所讨论的,MDC允许DB2安排磁盘上的数据,使具有相同维列值的行在块(一组页)中存储在一起。通过使用这种技术,用于搜索具有特定维值的行的查询把所有其他分区排除在扫描之外,只有符合条件的行才会被访问。
类似地,数据库分区特性可以拆分一组表,使得一部分数据存放在一个数据在分区上。数据库分区可以处于不同的服务器上,这样一来,大型的扫描可以使用多个服务器的处理能力。
DB2 V9还引入了一种新形式的分区,该特性被称为表分区(table partitioning),它允许将单个表扩展到多个表空间上。
这种新的分区功能有很多优点,包括创建表的语法更简单。下面是一个简单的示例,创建一个分区表,用于将24个月的数据存储在4个表空间上的24个分区中:
CREATE TABLE fact
(txn_id char(7), purchase_date date, ...)
IN tbsp1, tbsp2, tbsp3, tbsp4
PARTITION BY RANGE(purchase_date)
( STARTING FROM('2005-01-01')
ENDING('2006-12-31')
EVERY1MONTH )
快速添加或删除数据范围
表分区的另一个优点是,当您分离(detach)一个分区时,可以得到一个独立的表,这个表包含了那个分区的内容。您可以将一个分区从一个表中分离出来,然后对那个新分离出来的分区做一些处理,新分离出来的分区现在实际上是一个物理表。例如,您可以归档那个表,将它移到第三存储,将它复制到另一个位置,或者做您想做的任何事情。DB2 V9将异步地清除那个分区表上的任何索引键,而不影响正在运行的应用程序。
与添加一个新分区类似,您只需以和分区表相同的定义创建一个表,为之装入数据,然后将那个分区附加(attach)到主分区表上,如下所示:
ALTER TABLE FACT_TABLE ATTACH PARTITION
STARTING '01-01-2007'
ENDING '01-31-2007'
FROM TABLE FACT_NEW_MONTH
关于表分区的详细介绍,请参见《DB2数据库性能调整和优化》中“第4章:数据库物理设计和逻辑设计”的内容。