网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 数据库类-> Oracle-> 新的优化参数将响应时间减少到了最小

新的优化参数将响应时间减少到了最小
作者:佚名 来源:译自builder.com 加入时间:2004-11-10
相关文章
  • 夺取月薪之冠-Oracle认证!
  • Oracle数据安全面面观(2)
  • Oracle数据安全面面观(1)
  • Oracle10g数据库的创建
  • Oracle新技术对Linux意味着什么?
  • 在Oracle里设置访问多个SQL Server
  • 深入分析Oracle数据库日志文件
  • 在ORACLE里用存储过程定期分割表
  • 用Linux完成Oracle自动物理备份
  • Oracle Rman/tivoli-TDP/下数据恢复到节点
  • 相关书籍:
  • 利用 DBCA建立 Oracle 9i 资料库
  • Oracle 数据库DBA管理手册
  • Oracle 管理员手册
  • Oracle 官方文档CHM合集-SQL参考手册
  • Oracle WebServer 中文手册
  • Oracle 9i 数据库管理员指南
  • Oracle 9i 数据库管理实务讲座
  • Oracle 9I 入门基础(第02部分)
  • Oracle 9I 入门基础(第01部分)
  • Oracle 9i 官方教材
  • 在Oracle9 i 之前的版本里,仅有的两种基于代价的优化器(cost-based optimizer,CBO)模式是ALL_ROWS和FIRST_ROWS优化。传统的FIRST_ROWS SQL优化的一个缺点是,这一算法没有指定数据行检索的范围。

    但是Oracle9 i 引入了多种新的优化器命令:

    FIRST_ROWS_1
    FIRST_ROWS_10
    FIRST_ROWS_100
    FIRST_ROWS_1000
    FIRST_ROWS_ n 优化会告诉查询优化器,让它选择一个能够把响应时间减到最小的查询执行计划,以产生查询结果的前 n 行。

    你可以在数据库里的多个层次上设置这个新的CBO模式:系统范围内、会话这一层,或者在查询这一层。

    alter system set optimizer_mode=first_rows_100;

    alter session set optimizer_mode = first_rows_100;

    select /*+ first_rows(100) */ from student;

    根据Oracle的消息,有了FIRST_ROWS_ n 优化,Oracle查询会为结果集里的前 n 行给出最佳的可能响应时间。带有 n 行结果的快速响应会增强用户对很对应用程序的满意度,因为用户能够更快地获得数据集前面的结果。

    ALL_ROWS优化更倾向于完整表格扫描,而FIRST_ROWS优化更倾向于索引的使用,但是Oracle用FIRST_ROWS_ n 优化扩展了这一概念。

    在传统的FIRST_ROWS优化里,Oracle CBO更倾向于索引检索,即使它的整体代价要比完整表格扫描更高。这在小表格的情况下尤其如此,因为这样进行完整表格扫描的代价不是太大。

    想想下面的例子。

    Set autotrace on explain

    alter session set optimizer_goal = choose;

    select * from emp where sal < 1200;

    PLAN -----------------------------------------------------
    SELECT STATEMENT (OPTIMIZER=CHOOSE) (COST=62) (ROWS=99)
    TABLE ACCESS FULL EMP (COST=62) (ROWS=99)

    现在,我们会用FIRST_ROWS优化运行同样的查询。

    alter session set optimizer_goal = first_rows;

    select * from emp where sal < 1200;

    The explain plan is now transformed to:

    PLAN -----------------------------------------------------
    SELECT STATEMENT (OPTIMIZER=FIRST_ROWS) (COST=102)
      TABLE ACCESS BY INDEX ROWID EMP (COST=102) (ROWS=99)
      INDEX RANGE SCAN SAL_IDX (COST=2) (ROWS=99)

    尽管我们预计CBO会倾向于索引,但是我们很意外地看到FIRST_ROWS优化选择了一种比完整表格扫描代价更大的途径。这是就是关键点。在Oracle9 i 之前的版本里,FIRST_ROWS优化是内部规则和代价的混合体,而Oracle9 i 的FIRST_ROWS优化则完全是基于代价的。

    在Oracle9 i 之前的版本里,我们会使用OPTIMIZER_INDEX_COST_ADJ参数来控制CBO的倾向,让其选择索引而不是完整表格扫描。

    尽管Oracle宣称FIRST_ROWS_ n 优化会让查询更快,但是要记住的是,Oracle9 i CBO所做的一切只考虑了对前几行的访问,而牺牲了查询(的代价)。换句话说,FIRST_ROWS_ n 模式所做的一切是允许优化器作出更加智能的选择:在访问小表格的时候到底是使用索引还是完整表格扫描。由于大多数的Oracle9 i DBA都会在KEEP池里缓冲这些小表格,所以这个参数几乎没有什么用。

    本文作者: Donald Burleson做数据库管理员已经有23年了,曾经写过14本关于数据库的书和超过100篇的文章。他是《Oracle内幕(Oracle Internals)》的主编,并经营着Burleson Oracle咨询公司(Burleson Oracle Consulting)。

    [文章录入员:tonny]

    相关文章
  • 夺取月薪之冠-Oracle认证!
  • Oracle数据安全面面观(2)
  • Oracle数据安全面面观(1)
  • Oracle10g数据库的创建
  • Oracle新技术对Linux意味着什么?
  • 在Oracle里设置访问多个SQL Server
  • 深入分析Oracle数据库日志文件
  • 在ORACLE里用存储过程定期分割表
  • 用Linux完成Oracle自动物理备份
  • Oracle Rman/tivoli-TDP/下数据恢复到节点
  • 相关书籍:
  • 利用 DBCA建立 Oracle 9i 资料库
  • Oracle 数据库DBA管理手册
  • Oracle 管理员手册
  • Oracle 官方文档CHM合集-SQL参考手册
  • Oracle WebServer 中文手册
  • Oracle 9i 数据库管理员指南
  • Oracle 9i 数据库管理实务讲座
  • Oracle 9I 入门基础(第02部分)
  • Oracle 9I 入门基础(第01部分)
  • Oracle 9i 官方教材
  • 本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    Oracle
    ACCESS
    MS SQL
    MySQL
    Oracle
    Foxpro
    PowerBuilder
    Sybase
    其它
    电脑教程阅读排行
    ·Oracle 常用技巧和脚本
    ·Oracle常用数据字典
    ·Oracle8 数据类型
    ·Oracle 8.1.6 for...
    ·Oracle 基本知识
    ·深入分析Oracle数据库日志文...
    ·安装Oracle后,经常使用的修...
    ·怎样快速查出Oracle数据库中...
    ·Oracle 8.0.4 for...
    ·Oracle10g数据库的创建