Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

表(范围)分区

Posted on 2010-04-15 23:47 Prayer 阅读(312) 评论(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章:数据库物理设计和逻辑设计”的内容。


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理