再上一篇:12.7 LOB类型
上一篇:12.8 ROWID/UROWID类型
主页
下一篇:13.1分区概述
再下一篇:13.2表分区机制
文章列表

12.9小结

Oracle 9i 10g编程艺术:深入数据库体系结构

在这一章中,我们分析了 Oracle提供的22种基本数据类型,并了解了这些数据类型如何物理地存储 , 某种类型分别有哪些选项。首先介绍的是字符串,这是最基本的一种类型,并详细讨论了有关多字节字符 和原始二进制数据所要考虑的问题。接下来,我们研究了数值类型,包括非常精确的Oracle NUMBER类型 和Oracle 10g以后版本提供的新的浮点类型。
我们还充分考虑了遗留的LONG和LONG RAW类型,强调了如何绕开它们另辟蹊径,因为这些类型提供 的功能远远比不上LOB类型提供的功能。接下来,我们讨论了能存储日期和时间的数据类型。在此介绍了
日期运算的基本原理,这个问题很让人费解,如果没有实例演示,将很难搞清楚。最后,在讨论DATE和 TIMESTAMP的一节中,我们讨论了INTERVAL类型,并说明了如何最好地加以使用。
从物理存储角度来看,这一章讲得最多、最详细的就是LOB一节。LOB类型常常被开发人员和DBA所 误解,所以这一节用了很多篇幅来解释LOB如何物理地实现,并分析了一些要考虑的性能问题。
我们最后介绍的数据类型是ROWID/UROWID类型。由于很明显的原因(你现在应该知道这些原因了), 不要把这个数据类型用作数据库列的类型,因为ROWID不再是不可变的,而且没有完整性约束可以保证父/ 子关系。如果需要“指向”另一行,正确的做法可能是存储主键。

第13章 分区

分区(partitioning)最早在Oracle 8.0中引入,这个过程是将一个表或索引物理地分解为多个更 小、更可管理的部分。就访问数据库的应用而言,逻辑上讲只有一个表或一个索引,但在物理上这个表或 索引可能由数十个物理分区组成。每个分区都是一个独立的对象,可以独自处理,也可以作为一个更大对 象的一部分进行处理。
注意 分区特性是Oracle数据库企业版的一个选件,不过要另行收费。标准版中没有这个特性。 在这一章中,我们将分析为什么要考虑使用分区。原因是多方面的,可能是分区能提高数据的可用性 ,
或者是可以减少管理员(DBA)的负担,另外在某些情况下,还可能提高性能。一旦很好地了解了使用分区
的原因,接下来将介绍如何对表及其相应的索引进行分区。这个讨论的目的并不是教你有关管理分区的细 节,而是提供一个实用的指导,教你如何利用分区来实现应用。
我们还会讨论一个重要的事实:表和索引的分区不一定是数据库的一个“fast=true”设置。从我的 经验看,许多开发人员和DBA都认为:只要对对象进行分区,就自然而然地会得到性能提升这样一个副作 用。但是,分区只是一个工具,对索引或表进行分区时可能发生3 种情况:使用这些分区表的应用可能运 行得更慢;可能运行得更快;有可能没有任何变化。我的意见是,如果你只是一味地使用分区,而不理解 它是如何工作的,也不清楚你的应用如何利用分区,那么分区极可能只会对性能产生负面影响。
最后,我们将分析当今世界使用分区的一种非常常见的用法:在OLTP和其他运营系统中支持大规模 的在线审计跟踪。我们将讨论如何结合分区和段空间压缩来高效地在线存储很大的审计跟踪数据,并且能 用最少的工作将这个审计跟踪数据中的旧记录进行归档。