分区表和索引(1)

分区介绍
分区解决的主要问题是在非常大的表和索引中通过让你把他们分解成更小和更多的可管理的称为分区的片段。SQL查询和DML语句没必要为了访问分区表而被修改。可是,在分区被定义后,DDL语句可以访问和操作单独的分区而不是整个表或索引。这就是分区如何简化大数据库对象管理。同时,对应用程序来说,分区是完全透明的。

某张表或索引的每个分区必须具有相同的属性,比如列的名称,数据类型和约束,但是每个分区可以具有独立的物理属性,比如PCTFREE,PCTUSED和表空间。

对于许多不同类型的应用程序来说分区是很有用的,特别是那些管理了大量数据的应用程序。OLTP系统通常受益于在可管理性和可用性上面的提升,而数据仓库系统受益于性能和可管理性。
===============================================================================
注意:一个分区对象的所有分区必须驻留在一个单块大小的表空间里。

See Also:
■ "Multiple Block Sizes" on page 3-11
■ Oracle Database Data Warehousing Guide and Oracle Database
Administrator's Guide for more information about partitioning

分区提供了这些优势:
 分区可以在分区级而不是整个表进行像数据加载,索引创建和重建,备份恢复这样的数据管理操作。这将显著的减少这些操作的时间。
 分区提升了查询性能。在许多情况下,一个查询的结果可以通过访问分区的集合而不是整个分区来完成。对于一些查询,这种技术(称为分区修剪)可以在性能上提供数量级的收获。
 对于维护操作来说,分区可以显著减少计划宕机带来的影响。
对于分区维护操作来说,独立的分区让你在相同的表或索引上执行同时的维护操作。你也可以同时在分区上执行SELECT和DML操作而不受维护操作的影响。
 分区增加了关键数据库的可用性,如果重要的表和索引被分区来减少维护窗口,恢复时间和故障的影响。
 分区可以被实现而不要求你的应用程序的任何修改。比如,你可以把一张非分区表转换成分区表而不需要修改问该表的任何SQL语句和DML语句。你没必要为了使用分区而重写你的应用程序代码。

图18-1提供了一张如何分区表与非分区表如何不同的图形化视图。

分区键
分区表中的每行被明确的分配给一个单独的分区。分区键是一套为每行决定分区的一个或多个列。Oracle通过使用分区键自动的对合适的分区进行插入,更新和删除操作的管理。一个分区键:
 由1到16个列的排序列表组成
 不能包含一个LEVEL,ROWID或MLSLABEL的伪列或一个rowid类型的列
 不能包含一个可为空的列

分区表
表可以被分区成多达1024K个独立的分区。除了包含LONG或LONG RAW数据类型的表外其它任何的表都可以被分区。可是你也可以对包含CLOB和BLOB类型的列进行分区。
===============================================================================
注意:为了减少磁盘和内存的使用(特别是缓冲缓存),你可以一种压缩的格式在数据库中存储表和分区表。这通常会对只读的操作产生一种更好的可伸缩性。表压缩也可以加快查询的执行。可是会带来一点CPU的开销。

See Also: "Table Compression" on page 16-8
分区索引组织表
你可以通过RANG,LIST或HASH来对索引组织表分区。被分区的索引组织表有助于对索引组织表的可管理性,可用性和性能上的提升。使用索引组织表的数据容器可以利用这个特点来对他们存储的数据进行分区。这种常见的例子是图片和内部介质容器。

对于分区一个索引组织表:
 分区列必须是一组主键列
 第二索引可以被分区成本地或全局索引
 OVERFLOW数据段通常被表分区平均分。

猜你喜欢

转载自refurbish.iteye.com/blog/1876056