首页 > 数据库 > Oracle > Oracle学习系列—数据库优化—CBO介绍
CBO(Cost-based optimizer)是根据系统统计信息并以系统吞吐为最佳优化目标的Oracle优化方式。
边学边翻译,边翻译边体会..
[@more@]通常情况下,CBO是缺省的
以下是要必须使用CBO进行优化的内容
CBO的组成

查询转换(Query Transformer)
查询转换器主要分析下面4种查询转换信息
Ø 视图合并(View Merging).
Ø 断言(Predicate Pushing)
Ø 非嵌套子查询(Subquery Unnesting)
Ø 物化视图的查询重写(Query Rewrite with Materialized Views)
评估(Estimator)
评估器产生下面三种类型的度量值
Ø 选择性(Selectivity)
选择性代表了一个记录集(基表,视图,Group By结果集)中的片断,选择性通常和一个查询断言进行绑定.一个断言的选择性表明了一个结果集的行数通过了断言测试.选择性的范围是从0.0到1.0,0.0的选择性表示在结果中没有记录被选择,1.0的选择性表示所有行被选中
Ø 基数(Cardinality)
基数表示一个行集中的行数.
基本基数 是一个基表的记录数,通过分析表(Analyze Table)能够被获取,评估器通过表的分区数(Extents)来估计基本基数
有效基数 是从基表中选择到的记录数,有效基数取决于断言的查询.
连接基数 是两个行集连接后产生的行集.
Distinct基数 是行集中某个字段的Distinct的行数.
Group基数 是分组后产生的行数
Ø 成本(Cost)
成本代表资源使用的单位,CBO使用I/O,CPU,内存做为工作单位.
计划生成器(Plan Generator)
主要功能是试图找出所有可能的不同的组合,并找到最低成本的执行计划
一个SQL执行计划和执行步骤
详细参看Oracle9i/Database
Performance Tuning Guide and Reference
EXPLAIN PLAN FOR
SELECT e.employee_id, j.job_title,
e.salary, d.department_name
FROM employees e, jobs j, departments d
WHERE e.employee_id < 103
AND e.job_id = j.job_id
AND e.department_id = d.department_id;


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