WEB开发网
开发学院数据库Oracle Oracle中资源的共享与竞争及问题定位 阅读

Oracle中资源的共享与竞争及问题定位

 2007-05-13 12:29:55 来源:WEB开发网   
核心提示: Execution Plan 下的信息显示 ORACLE 制定了一个什么样的计划来完成 SQL 操作的,SQL语言是一种 4GL 语言,其特点是告诉系统做什么,而不提供如何做的信息,当然 , 最终的具体工作总得有人做的,只是由数据库自动制定而不是程序员人为指定一个具体的操作步骤 , 制作这

Execution Plan 下的信息显示 ORACLE 制定了一个什么样的计划来完成 SQL 操作的,SQL语言是一种 4GL 语言,其特点是告诉系统做什么,而不提供如何做的信息。当然 , 最终的具体工作总得有人做的,只是由数据库自动制定而不是程序员人为指定一个具体的操作步骤 , 制作这个步骤当然要有所依据, ORACLE 有两个基本原则来决定如何优化:cost-based( 基于开销的优化 ) 和 rule-based( 基于规则的优化 )。基于开销的优化的工作方式依赖于数据库对 SQL 语句所操作的数据对象 ( 可简单认为就是表 ) 的数据特征的统计特性进行收集和分析。收集分析的工作由 DBA 来定期执行 , 时间间隔依数据变化频率而定,以保持统计数据一定的准确性,具体操作请参照 analyze 语句。Oracle 准备在将来的版本中取消对基于开销的优化方案的支持,因为这种方案需要大量的数据收集与分析工作 , 且总会有一定的误差,这造成最终的执行方案往往不是最优的。

基于规则的优化则是依据一些数据操作效率的规则进行选择, 优化的核心在于效率,时间上尽可能短,空间上尽可能少进行 IO 操作。两种优化方案都绝非十全十美 , ORACLE 虽将其称为优化方案,笔者的观察结果表明,ORACLE 制定出一个不是最优或错误的执行方案也是完全可能的。以上为例,Oracle 的优化策略是 Choose, 所谓 Choose 就是 cost-based 或 rule-based , 让 ORACLE 自己选择,可以通过数据库启动初始化文件 initXXX.ora 文件中的 optimizer_mode 参数来指定。

言归正传,上面的具体策略是 Oracle 对该表的一个唯一索引进行全扫描 , 因为在数据库里一个字段如果可以建立一个 UNIQUE 类型的索引,那么它就与表中的记录有一一对应的关系。所以对该索引进行 count(*) 可以保证其值等于对表进行 count(*) 操作。对索引进行全扫描后的上层操作是一个集合操作 , 即对找到的每个索引记录进行计数。对这些信息的观察主要用来确定 ORACLE 是否选用了 SQL 程序员希望 ORACLE 选用的索引操作。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Oracle 资源 共享

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接