频道栏目
读书频道 > 数据库 > Oracle > Oracle Database 11g性能优化攻略
攻略1-3 匹配表类型与业务需求
2013-03-12 15:47:49     我来说两句
收藏   我要投稿
本书自始至终围绕性能调优这一主线,由浅入深地介绍常见的Oracle数据库性能问题。每节分析一个具体的性能问题,并全部采用问题描述—解决方案—工作原理这种独特的介绍风格,针对性强,方便读者理解和查阅。同时...  立即去当当网订购

问题描述

你刚开始使用Oracle数据库,并且已经学习了一些关于可用的各种表类型的知识。例如,可以在堆组织表、索引组织表等之间作出选择。你想要创建一个数据库应用,并且需要确定它所使用的表类型。

解决方案

Oracle提供了非常丰富的表类型,默认的是堆组织表。对于大多数的应用,堆组织表是一种高效的数据存取结构,但是,你也需要了解其他的表类型,并且还应该知道在什么情况下,应该使用哪种类型的表。表1-1描述了各种表类型及其适用的场景。

表1-1 Oracle的表类型及其常见用法


表类型/特性 描  述 优点/用法
堆组织表 默认的Oracle数据表类型,也是最常使用的表类型 除非有特殊原因要使用其他表类型,否则就使用这种类型
临时表 在会话或事务期间用来存放会话私有数据,存储空间分配在临时段中 程序需要有一个临时表结构来存放数据并对其进行排序,在程序结束以后就不需要这张表了
索引组织表 数据存储在一个按照主键排序的B树索引结构中 这样的表主要在主键列上进行查询,能够提供快速随机存取
分区表 由多个互相分隔开的物理段组成的逻辑表 这种类型的表通常数据行数高达几百万。分区会极大影响大表和索引的性能可扩展性
物化视图(MV) 一张存储某个SQL查询输出结果的表。按照需要,物化视图表可以随着SQL查询结果集的当前快照而定期更新 聚集数据以生成快速报表或复制数据,提高报表数据库的性能
聚簇 共享相同存储块的一组表 用在经常需要对相同列进行连接的表中,以减少表的输入/输出(I/O)
外部表 使用存储在数据库之外的操作系统文件中数据的表 利用这种类型的表,可以有效地读取数据库之外的文件中的数据(例如一个CSV或文本文件)。外部表提供了一种在数据库之间高效传递数据的方法
嵌套表 一张表某个列的数据类型是另一张表 很少用
对象 一张表某个列的数据类型是对象类型 很少用
 工作原理

在大多数场景下,堆组织表就能够满足你的需求。这种Oracle表类型已被证明适用于各种数据库环境。如果数据库设计得当(标准化结构),并结合适当的索引和约束,就将会得到一个性能优良并可维护的系统

通常来说,大多数的表都是堆组织表。但是,如果你需要利用一些非堆特性的优势(并且确信能够得到这些好处),那么当然应该去尝试。例如,Oracle分区就是创建大表和索引的一种可扩展方法。物化视图对于聚集和复制数据来说是非常有效的特性。当表中大多数列都是主键的一部分时(例如多对多关系中的交叉表),索引组织表是一种很高效的结构。

警告 不应该仅仅因为你觉得最近刚听说的某种新特性很酷,而选用某种表类型。有时候人们学到一种特性,并决定实现它,而并没有首先了解这种特性的性能优缺点以及维护成本。首先应该测试并验证这个特性具有可靠的性能优势。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:攻略1-2 创建具有最优性能的表空间
下一篇:攻略1-4 选择有益于性能的表特性
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站