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/
,如需转载,请注明出处,否则将追究法律责任。