`
jinghuainfo
  • 浏览: 1525126 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Oracle数据库开发结构设计技巧

 
阅读更多
<p>author:skate</p>
<p>time:2010-08-26</p>
<hr>
<p>
尽管Oracle系统本身已经提供了若干种对系统性能进行调节的技术,但是,假如数据库设计本身就有问题特别是在结构上设计得尤其糟糕,那你纵有天
大的本事又能奈何?因此,Oracle数据库的设计者完全有必要弄清楚(从项目着手设计开始)该如何创建稳固的Oracle数据结构,在保证可维护性和可
扩展性的同时以最快的速度从数据库中获取信息。 <br><br>
让我们把笼罩在数据库技术外围的复杂理论和存心不让人明白的技术行话扔一边去,其实,说
白了你就只需要记住一点,这也是牵扯到数据库性能的最重要最简单因素:磁盘I/O。磁盘I/O正是系统消耗最大的的Oracle数据库操作。Oracle
设计专家在设计数据体系结构的时候务必记得:在获取所需要的信息时一定要想尽办法把磁盘访问量降到最低!<br><br>
这篇文章提出了一些Oracle数据库数据体系结构设计方面的技巧,有了它们,在创造出易于维护和扩展的设计方案同时还能让数据库保持在最优化的性能水准之上。<br><br><br>
结构设计技巧<br>
Oracle产品中有好些可以降低SQL查询磁盘I/O量的工具。下面就是一些能极大改进Oracle 系统性能的结构设计问题。<br><br>
采用多种大小尺度的数据块<br><br>

完全可以故意地把不同的表和索引结构映射到具有不同大小的表空间。这种分配方案的设计依据是表内数据行的平均长度以及整个数据库内的数据访问模式。
Oracle9i给你提供了以下几种选择:2K、4K、16K甚至32K的表空间大小。这一招的实质是让表和索引仅需一次磁盘I/O就可以获取所有关联数
据行的信息。<br><br>
预先计算复杂的SQL查询<br><br>
Oracle提供了具体化的视图和VARRAY表,通过它们就可以预建复杂的查询并汇集到单行表内,这样即时获取信息可就快多了。即时汇集是一种优异的Oracle设计。<br><br>
采用内存数据缓冲<br><br>

应该知道Oracle9i允许开辟很大的内存区域以便缓冲常用索引行的信息。常用索引信息的缓冲应该是一个主要的专业设计目标,因为内存访问的速度可是磁
盘访问速度的至少1万倍。Oracle数据块缓冲区越大,SQL查询的执行速度就越快。内存数据缓冲区的大小对Oracle的性能具有直接的影响,如果数
据缓冲区缓冲了全部数据系统就可以达到最快的运行速度。<br><br>
购买更快的处理器<br><br>
Oracle数据库服务器的CPU速度对数据库性能有直接影响。高性能64位CPU的运行速度通常比32位处理器快10次。目前几乎所有的主要平台都可以采用64位处理器了,其中包括:<br><br>
Windows—Intel安腾处理器 <br>
HP—PA-8000处理器 <br>
Solaris—500-MHz Ultrasparc-iie处理器 <br>
IBM AIX—RS/6000 PowerPC处理器 <br>
采用64位版本的Oracle<br><br>

烈建议你在装备64位CPU体系结构的专门服务器平台上安装和运行64位的Oracle数据库系统。Oracle的64位版本可以创建大规模的SGA区域
以及通常需要超过20GB内存数据缓冲区的大规模项目。32位Oracle数据库的一个严重缺陷就是SGA最大只能开辟1.7GB。<br><br><br>
对索引使用大数据块使磁盘I/O减到最小<br><br>
Oracle索引访问在Oracle数据库大小为16K和32K的情况下性能表现最好。你应该查询相应的应用程序和操作系统文档,为你的计算环境创建最大的索引表空间。<br><br>
使用Oracle并行查询<br><br>
所有的数据访问都应该经过调整避免大规模表扫描或者全表扫描,但在很多情况下都会有这样的查询要求,怎么办呢?你不妨保证所有的全表扫描都充分利用了Oracle并行查询机制以提高查询性能。<br><br>
选择适当的SQL优化<br><br>
优化器模式的选择对Oracle SQL性能具有关键的影响。对Oracle9i而言,所有查询中大约有一半左右在基于规则的优化条件下会运行得更快一些;另外一半则在基于开销的优化条件运行得最快。<br><br>
包固定<br><br>
所有经常被引用的PL/SQL包都应该使用dbms_shared_pool.keep过程固定到共享池。这样做将极大地加快Oracle PL/SQL的执行速度。<br><br>
在存储过程内设计所有的数据访问<br><br>
最重要的设计问题之一把所有的数据库访问代码都放到PL/SQL存储过程中。<br><br><br>
存储过程设计技巧<br>
Oracle设计目标之一是尽可能地把所有Oracle处理代码都封装进存储过程。这样做可以获得相当大的益处,主要同性能和可维护性有关。你应该把自己的工作焦点置于这一目标之上。<br><br>
数据同行为耦合<br><br>

多数据库管理员采用Oracle8的成员方法实现存储过程与数据库对象的紧密耦合。其它人则习惯于采用命名规范。例如,假设所有同customer表有关
的行为都冠以该表的名字作为前缀(customer.hire、customer.give_raise等),那么你就可以查询数据字典列出某表关联的所
有行为(select * from dba_objects where owner = 'CUSTOMER')而你能很容易地辨别和重用代码。<br><br>
代码隔离<br><br>
因为所有的SQL都从外部程序移入了存储过程,所以应用程序也就不外乎只涉及到对存储过程的调用。正因如此,内外交换某一个数据库就很简单了。<br><br>
更快的SGA存取<br><br>

储过程和触发器函数的运行速度为什么快于传统数据库操作代码呢?主要原因要涉及到Oracle
SGA。在一个过程被装入SGA的共享池以后,它会一直“呆”到被调出内存给其他存储过程腾出空间为止。把过程调出内存的原则就是所谓的LRU算法。一旦
装入了分享池的内存区,过程的执行速度可就快多了,这里的花招就是想办法阻止共享池承受太大的负载,因为许多存储过程会竞争有限的共享池内存量。再次重
申:只要存储过程装入了共享池就要等到被调出内存为止。连续的存储过程执行就比外部代码更快。<br><br>
小结<br>
Oracle设计师的标志之一
就是有能力创造出稳固、可维护和高效率的全面体系结构。今天的
Oracle设计专家需要设计出能支持每秒数千宗交易的系统同时还能实现快速的响应时间、简易的维护以及可扩展性。只要全面地了解Oracle9i
数据库的特性,采用本文建议的技巧,你肯定能建立恰当的数据模型结构来支持最终用户的需求。<br><br><br></p>
分享到:
评论

相关推荐

    Oracle数据库管理员技术指南

    7.6.1 数据库恢复和涉及的数据库结构 组织 7.7 各种需要恢复的情形 7.8 恢复丢失的数据文件 7.8.1 SYSTEM 数据文件的丢失 7.8.2 包含活动回退段的数据文件的丢失 7.8.3 其他数据文件的丢失 7.8.4 执行表空间...

    oracle数据库开发

    本书从DBA的角度阐述了Oracle数据库的结构内幕、管理经验和优化技巧,并列举了很多非常有用的实际案例

    Oracle PL SQL程序设计 中文第五版 上册

     《oracle pl/sql程序设计(第5版)(上下册)》结构清晰,示例丰富,实践性强,适用于oracle数据库开发人员、oracle数据库管理员等相关数据库从业人员,也可以作为各大、中专院校相关专业师生的参考用书和相关培训机构...

    Oracle PL SQL程序设计 中文第五版 下册

     《oracle pl/sql程序设计(第5版)(上下册)》结构清晰,示例丰富,实践性强,适用于oracle数据库开发人员、oracle数据库管理员等相关数据库从业人员,也可以作为各大、中专院校相关专业师生的参考用书和相关培训机构...

    Oracle PL SQL 程序设计 下 第五版part2

     《Oracle PL/SQL程序设计(第5版)(套装上下册)》结构清晰,示例丰富,实践性强,适用于Oracle数据库开发人员、Oracle数据库管理员等相关数据库从业人员,也可以作为各大、中专院校相关专业师生的参考用书和相关...

    Oracle PL/SQL程序设计(第5版)(套装上下册)

     《Oracle PL/SQL程序设计(第5版)(套装上下册)》结构清晰,示例丰富,实践性强,适用于Oracle数据库开发人员、Oracle数据库管理员等相关数据库从业人员,也可以作为各大、中专院校相关专业师生的参考用书和相关...

    oracle数据库dba管理手册

    4.4.1 小型开发数据库设计 70 4.4.2 产品OLTP数据库设计 70 4.4.3 具有历史数据的产品OLTP数据库 设计 71 4.4.4 数据仓库设计 72 4.5 文件位置 75 4.6 数据库空间使用概述 76 4.6.1 storage子句的意义 77 4.6.2 表...

    JDBC 3.0数据库开发与设计

    第5章 二层结构数据库开发实例 5.1 二层结构原理 5.2 Applet访问数据库实例 5.3 Application访问数据库实例 5.4 使用Jdevelpoer工具的数据库开发实例 5.5 二层结构开发数据库的优缺点 5.6 本章小结 第6章 ...

    Oracle.PL.SQL程序设计_第五版_上册]扫描版

    《OraclePL/SQL程序设计(第5版)》结构清晰,示例丰富,实践性强,适用于Oracle数据库开发人员、Oracle数据库管理员等相关数据库从业人员,也可以作为各大、中专院校相关专业师生的参考用书和相关培训机构的培训教材...

    Oracle PL SQL 程序设计第五版(chapters27and28+源码)

    《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...

    Oracle PL/SQL程序设计(第5版)

    《OraclePL/SQL程序设计(第5版)》结构清晰,示例丰富,实践性强,适用于Oracle数据库开发人员、Oracle数据库管理员等相关数据库从业人员,也可以作为各大、中专院校相关专业师生的参考用书和相关培训机构的培训教材...

    Oracle PL SQL 程序设计 下 第五版part1

     《Oracle PL/SQL程序设计(第5版)(套装上下册)》结构清晰,示例丰富,实践性强,适用于Oracle数据库开发人员、Oracle数据库管理员等相关数据库从业人员,也可以作为各大、中专院校相关专业师生的参考用书和相关...

    Oracle PL SQL程序设计第五版(上)

    《Oracle PL/SQL程序设计(第g5)》基于Oracle数据库11G,从用PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、构造PL/SQL应用程序、高级PL/SQL主题这6个方面详细而系统地讨论了PL/SQL以及如何有效地...

    oracle 9i课件

    内容: Oracle对象关系数据库;Oracle的函数;Oracle数据库的启动与权限管理;Oracle数据库管理系统;Oracle数据库例程和进程;...第16章 PowerBuilder高级开发技巧;管理Oracle数据库;数据字典等等!!!

    Oracle PL/SQL程序设计(第5版)(上下册)

    《Oracle PL/SQL程序设计(第5版)》结构清晰,示例丰富,实践性强,适用于Oracle数据库开发人员、Oracle数据库管理员等相关数据库从业人员,也可以作为各大、中专院校相关专业师生的参考用书和相关培训机构的培训...

    数据库设计培训.pptx

    数据库的基本知识和数据库设计技术 计算机科学的基础知识和程序设计的方法和技巧 软件工程的原理和方法 应用领域的知识 数据库设计培训全文共37页,当前为第5页。 数据库设计概述 数据库设计方法 规范设计法 手工...

    Oracle优化日记:一个金牌DBA的故事 第一部

    另外本书第一次详尽地披露了oracle数据库内部存储结构,并公布了部分代码,对于有兴趣研究数据库内部存储结构或者编写dul工具的读者有一定的参考价值。  本书适合oracle数据库管理开发人员阅读。

    Oracle PL SQL程序设计 上 第五版(代码示例)

    《oracle pl/sql程序设计(第5版)》基于oracle数据库11g,从pl/sql编程、pl/sql程序结构、pl/sql程序数据、pl/sql中的sql、pl/sql应用构建、高级pl/sql主题6个方面详细系统地讨论了pl/sql以及如何有效地使用它。...

Global site tag (gtag.js) - Google Analytics