【性能优化】CBO,RBO在ORACLE 10g 中的应用

简介:

奇怪的执行计划 10g 开始 oracle 就默认使用cbo 来代替rbo 来选择合适的执行计划,但是今天遇到的一个例子,有点例外:

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Productio
NLSRTL Version 10.2.0.4.0 - Production
SQL> show parameter optimizer

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_dynamic_sampling           integer     2
optimizer_features_enable            string      10.2.0.4
optimizer_index_caching              integer     0
optimizer_index_cost_adj             integer     100
optimizer_mode                       string      CHOOSE
optimizer_secure_view_merging        boolean     TRUE

SQL> create table t as select * from dba_objects;

Table created.

SQL> set timing on
SQL> set autot traceonly
SQL> select count(*) from t;

Elapsed: 00:00:00.02

Execution Plan
----------------------------------------------------------
Plan hash value: 1842905362

-----------------------------------
| Id  | Operation                    | Name |
-----------------------------------------------
|   0 | SELECT STATEMENT   |      |
|   1 |  SORT AGGREGATE      |      |
|   2 |   TABLE ACCESS FULL| T    |
-----------------------------------

Note
-----
   - rule based optimizer used (consider using cbo)
Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
        737  consistent gets
        732  physical reads
          0  redo size
        517  bytes sent via SQL*Net to client
        492  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

可以看出 该执行计划使用的是rbo 并提示考虑使用cbo 。而当对该表进行信息统计之后,执行计划就会使用cbo。

SQL> exec dbms_stats.gather_table_stats (user,'T');

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.52
SQL> select count(*) from t;

Elapsed: 00:00:00.01

Execution Plan
----------------------------------------------------------
Plan hash value: 1842905362

-------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |   163   (1)| 00:00:02 |
|   1 |  SORT AGGREGATE      |      |     1 |                  |          |
|   2 |   TABLE ACCESS FULL | T  | 53482 |   163   (1)| 00:00:02 |
-------------------------------------------------------------------


Statistics
----------------------------------------------------------
         42  recursive calls
          0  db block gets
        741  consistent gets
          0  physical reads
          0  redo size
        517  bytes sent via SQL*Net to client
        492  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
          1  rows processed

由此看见在没有进行信息统计的情况下,10g 会使用 RBO 而进行了信息统计后就会使用 CBO 。

相关文章
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
1388 64
|
存储 Oracle 关系型数据库
关系型数据库Oracle应用场景
【7月更文挑战第5天】
719 3
|
SQL Oracle 关系型数据库
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
在Oracle数据库开发中,双引号的使用是一个重要但易被忽视的细节。本文全面解析了双引号在SQL中的特殊应用场景,包括解决标识符与保留字冲突、强制保留大小写、支持特殊字符和数字开头标识符等。同时提供了最佳实践建议,帮助开发者规避常见错误,提高代码可维护性和效率。
653 6
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
1871 6
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
449 1
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
772 3
|
Oracle 关系型数据库 数据处理
|
人工智能 Oracle 关系型数据库
Oracle数据库在哪些新兴领域有应用?
【7月更文挑战第21天】Oracle数据库在哪些新兴领域有应用?
399 1
|
SQL 监控 Oracle
Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)
Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)
|
SQL Oracle 关系型数据库
oracle中wm_conocat()函数的应用
oracle中wm_conocat()函数的应用
308 1

推荐镜像

更多