Prayer

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

DB2 V9表分区 1

Posted on 2010-04-15 23:36 Prayer 阅读(258) 评论(0)  编辑 收藏 引用 所属分类: DB2
DB2 V9新增了表分区功能,因此对一些大表,我们在DB2 V9中不再需要分拆成小表,再用UNION ALL视图的方式进行设计,而是直接用分区表实现一些这些功能。表分区功能是一种数据组织方案,即,表数据根据一个或多个表列中的值分布到多个存储对象(称为数据分区或范围)中。每个数据分区都是单独存储的。这些存储对象可以在不同的表空间中,也可以在相同表空间中。由于表分区是DB2 V9新增的功能,所以很多用户对其特性不是很了解,本文将重点介绍DB2 V9表分区功能,并通过实际的例子来帮助大家理解和提高。

简介 

    在DB2 V9之前,对一些大表,出于对性能和数据容量限制的考虑,我们通常会把大表分拆成一些小表,再用UNION ALL 视图的方式进行联合起来。DB2 V9在数据容量方面有了重大突破,DMS 表空间的新缺省类型是“大型”,当使用“大型”DMS表空间时,单表的最大容量限制是16384G(Byte),而不再是以前的512 G(Byte)。DB2 V9新增了表分区功能,使得我们对大表的性能和数据容量的顾虑都不再存在。使用表分区,能够创建非常大的表,通过跨多个存储器对象划分表数据,可显著增大表,一个表最多可以有32K个数据分区。使用表分区分隔数据能够避免扫描不相关的数据,从而提高查询处理性能。DB2优化器从查询操作中去除不相关的分区。 

    表分区功能是一种数据组织方案,根据一个或多个表列中的值将表数据划分到多个称为数据分区或范围的存储对象中。每个数据分区都是单独存储的。这些存储器对象可位于不同的表空间和/或相同的表空间中。跨多个存储器对象对表数据进行分区的能力为数据库管理员提供了更高的可伸缩性和灵活性,同时提高了性能和控制能力。表分区可大幅度减少管理庞大数据库所需的维护工作,并可有效增加单个表的潜在大小。表和索引自动重组的新策略选项使您能够更有效地管理DB2服务器对表和索引的自动重组。表分区使您能够定义表数据的范围,以便单独保存每个范围。例如,您可基于表中的日期列,按月对表进行分区。每个范围(称为数据分区)与单个存储器对象对应。这些存储器对象可位于不同的表空间和/或相同的表空间中。由于可以对单个数据分区执行管理任务,将很耗时的维护操作分成一系列较小的操作来执行,从而使管理工作更为灵活。例如,可备份和复原单个数据分区而不是整个表。DB2 V9新增的表分区功能增强了对索引位置的细化控制,可将索引置于不同表空间并单独管理它们。使用 ALTER TABLE语句的 ATTACH PARTITION和DETACH PARTITION子句可进行快速及方便的数据转入或转出。此功能在数据仓库环境中特别有用,在此环境中经常需要装入或删除数据以运行决策支持查询。能够将表分区与其他数据组织方案组合在一起。通过将表分区与数据分区功能(DPF)一起使用,可跨数据库分区均匀地分布数据范围,以利用 DPF 的查询内并行性和数据库分区负载均衡功能。将表分区与多维集群(MDC)一起使用时,能够对同一表扩展数据块中在多个维上具有类似值的行进行分组。
由于表分区是DB2 V9新增的功能,所以很多用户对其特性不是很了解,本文将重点介绍DB2 V9表分区功能,并通过实际的例子来帮助大家理解和提高。

    我们将按照下列顺序介绍表分区:

1. 创建示例数据库DB2TEST1,在示例数据库上创建一个使用32K页大小的缓冲池,创建3个DMS表空间,用来存放示例分区表的数据,创建3个大型表空间(DMS),用来存放示例分区表的大型数据,创建1个DMS表空间,用来存放示例分区表的索引

2. 使用自动方式创建示例分区表

3. 使用手工方式创建示例分区表

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