Oracle中资源的共享与竞争及问题定位
2007-05-13 12:29:55 来源:WEB开发网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 选用的索引操作。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接