ITPub博客

首页 > Linux操作系统 > Linux操作系统 > CBO的详解

CBO的详解

原创 Linux操作系统 作者:oracleclub 时间:2011-12-08 22:52:19 0 删除 编辑
CB0(Cost-Based Optimizer)


                操作系统统计数据及数据库统计数据
                               |
                               |    2
                               |
                   1         \/         3                                                              4
SQL语句————>CBO————>计算每个待选执行计划的I/O次数————>最佳执行计划
                              /\                     及CPU周期数
                              |
                              |   2
                              |     
                       字典统计数据

===========================================================================
优化目标分为:
吞吐量:
响应时间:需要返回SQL查询的前几行

优化方式分为:
最大吞吐量——>ALL_ROWS:默认,

                      / FIRST_ROWS_n:输出查询的前n行数据
满足快速响应                 
                      \ FIRST_ROWS:是老板本,输出前几行

不同级别:查询
SQL> show parameter optimizer_mode

NAME                                 TYPE       VALUE
------------------------------------ ---------- ------------------------------
optimizer_mode                       string     ALL_ROWS

实例级:
SQL> alter system set optimizer_mode=first_rows_10 scope=both;

System altered.


会话级:
SQL> alter session set optimizer_mode=ALL_ROWS;

Session altered.

语句级:加提示hints
SQL> select /*+first_rows_10*/ dname from scott.dept;
=============================================================================
四个步骤:
1,根据统计数据转换SQL语句
CBO认为转换后更有效,例如:将OR转换成UNION ALL,将BETWEEN转换成>=和<=等

2,根据资源情况选择访问路径
在多个查询路径中选择计算成本最小的一个

3,根据统计数据选择连接方式
多表连接时,CBO根据主键信息来选择连接方式,在多个连接方式中选择成本最低的一个作为最佳连接方式;

4,确定连接次序
CBO根据连接所涉及的数据行的数目来确定最好的连接次序,对这些连接次序进行计算,选择最好的执行计划;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26465805/viewspace-712995/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-11-22

  • 博文量
    61
  • 访问量
    96547