【效能優化】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 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-672778/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL優化器-RBO與CBO分別是什麼SQL優化
- Oracle:RBOOracle
- oracle 效能優化Oracle優化
- Spark SQL 效能優化再進一步 CBO 基於代價的優化SparkSQL優化
- 移動應用效能優化優化
- Vue 應用效能優化指南Vue優化
- Oracle效能優化-SQL優化(案例一)Oracle優化SQL
- Oracle效能優化-SQL優化(案例二)Oracle優化SQL
- Oracle效能優化-SQL優化(案例三)Oracle優化SQL
- Oracle效能優化-SQL優化(案例四)Oracle優化SQL
- Oracle "腦殘" CBO 最佳化案例Oracle
- JDBC 在效能測試中的應用JDBC
- 袋鼠雲數棧基於CBO在Spark SQL優化上的探索SparkSQL優化
- Flutter | 效能優化——如何避免應用 jankFlutter優化
- Flutter 應用效能檢測與優化Flutter優化
- 在單頁應用中,如何優雅的上報前端效能資料前端
- Oracle效能優化方法論的發展之三:基於響應時間分析的效能優化方法論Oracle優化
- 淺談canvas在web開發中的應用與優化CanvasWeb優化
- Oracle 效能優化-expdp備份速度優化03Oracle優化
- Oracle 效能優化-expdp備份速度優化02Oracle優化
- Oracle優化案例-改變那些CBO無能為力的執行計劃(一)Oracle優化
- 使用非同步元件優化Vue應用程式的效能非同步元件優化Vue
- 利用React 16.6新特性優化應用效能React優化
- Hive使用Calcite CBO優化流程及SQL優化實戰Hive優化SQL
- 常用效能最佳化手段及在風控系統中的應用
- 在單頁應用中,如何優雅的監聽url的變化
- Oracle SQL效能優化的40條軍規OracleSQL優化
- Oracle效能優化方法論的發展之二:基於OWI的效能優化方法論Oracle優化
- Oracle效能優化方法論的發展之六:基於流程分析和響應時間分析的效能優化方法論Oracle優化
- Oracle效能優化方法論的發展之五:基於工作單元的響應時間分析的效能優化方法論Oracle優化
- 效能優化小冊 - 提高網頁響應速度:優化你的 CDN 效能優化網頁
- 基於Xamarin.Android的應用程式啟動效能優化Android優化
- 掌握提高 Web 應用的效能的方法 之 優化 PHP 和 LaravelWeb優化PHPLaravel
- Oracle優化案例-select中to_clob對效能的影響(二十一)Oracle優化
- Web 效能優化:Preload與Prefetch的使用及在 Chrome 中的優先順序Web優化Chrome
- Json序列化在golang中的應用JSONGolang
- 最佳化器-RBO 的規則轉化
- 【譯】React 應用效能調優React
- oracle 10g建立資料庫鏈的簡化Oracle 10g資料庫