yangtingkun
===========================================================
分区表和分区索引——数据库概念
===========================================================

Oracle的分区技术用来支持非常大的表和索引。利用分区可以将一张大的表分成多个小的,易于管理的分区。

查询语句和DML语句访问分区表时不需要进行任何的修改。然而DDL语句可以避免对整个表或索引进行操作,而直接针对单独的分区进行操作。分区使得数据库中包含海量数据的表或索引的可管理性增强,而且分区完全对应用程序透明。

表或索引的分区具有相同的逻辑结果,而他们可以拥有各自的物理结构。分区适用于各种类型的应用程序:OLTP系统可以在可管理性和可用性方面得到提高;数据仓库系统可以从可管理性和性能方面获益。

 


分区表具有以下优点:

分区使得数据管理操作如数据装载、索引建立和重建、备份和恢复等在分区级别上完成,这比在表级完成操作要明显的节省时间;

分区可以提高性能,在很多情况下,查询可以通过扫描某个分区来完成,而不是去扫描整个表;

分区技术可以明显的降低因维护操作而计划停机带来的影响;

分区可以增加关键表的可用性;

分区的实施不需要修改现有任何的应用程序。

 

分区键:

分区表中的每条记录都唯一的属于一个分区,分区键就是确定一条记录属于哪个分区的一列或多个列。

分区键可以由1~16列组成,可以包含空值,不能包含ROWID、LEVEL或MLSLABEL等伪列。

 

分区表的限制:

最多可以包括64000个分区,不能包含LONG和LONG RAW字段。

 

索引组织表的分区限制:

只支持范围和HASH分区;

分区列必须是主键列的子集;

第二索引(除主键外的索引)可以分区;

OVERFLOW数据段采用和表保持等同分区(分区方式相同,分区的范围也相同,每个表分区都对应一个OVERFLOW分区)。

 

分区类型:

范围分区、HASH分区、列表分区和复合分区。

其中复合分区包含范围HASH分区和范围列表分区。

 

分区的建议:

表的大小超过2G就可以考虑是否分区;

包含历史数据的表。这种表一般采用时间字段的范围分区,新的数据总是装载到新的分区中。

 

分区索引包括两种:

本地分区索引和全局分区索引。

本地分区索引采用和表的等同分区,因此,在对分区进行操作时(如ADD PARTITION或DROP PARTITION等),Oracle会自动维护本地分区索引的正确性。

全局分区索引可以采用和表不同的分区范围或分区方式。一般对分区执行了DDL操作后,全局索引都会处于INVALID状态,不过9i增加了新的语法,UPDATE GLOBAL INDEXES,使得DDL在操作分区数据的之后维护全局索引的正确性。

 

分区索引的特性:

可以建立BITMAP分区索引,但是BITMAP索引必须是LOCAL的。

全局索引可以唯一,而本地索引只有在分区键是索引的一部分的情况下,才能唯一。

 

OLTP系统中的分区索引:

全局索引和唯一本地索引比非唯一本地索引具有更好的性能,因为他们只需要扫描特定的分区就可以了,而后者必须对所有分区进行扫描。

当存在对表分区的维护操作时,本地索引提供更好的可用性。

 

数据仓库和DSS系统中的分区索引:

更倾向于本地分区索引,因为本地分区索引在数据装载和分区维护操作中更易于管理。

由于可以多个分区并行扫描,本地索引可以提高性能。

 

分区与性能提升:

分区带来的性能提升来自三个方面:

Partition Pruning:Oracle根据查询条件自动将扫描范围缩小到一个或几个表(索引)分区上。这种方式其实是分区扫描替代了全表扫描。

Partition-Wise Join:如果连接查询的两张表都在连接列上进行分区,则Oracle会优化连接操作,将一个大的连接分成各个对应分区间的连接,而且这些分区连接操作还可以并行执行。

并行DML:采用并行执行,可以使操作并行在各个分区上同时执行,从而提供执行效率。

 

 

yangtingkun 发表于:2005.04.20 23:52 ::分类: ( 读书笔记 ) ::阅读:(2988次) :: 评论 (0)

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)

 authimage


切换风格
新闻聚合
博客日历
文章归档...
最新发表...
最新评论...
最多阅读文章...
最多评论文章...
博客统计...
Blog信息
网站链接...