Oracle 优化器内幕:CBO 基本公式与挑战
需积分: 10 175 浏览量
更新于2024-08-15
收藏 1.81MB PPT 举报
"Oracle 优化器内幕:基本公式与CBO解析"
在Oracle数据库中,优化器是决定SQL查询执行效率的关键组件。本资源主要探讨了Oracle Cost-Based Optimizer(CBO,基于成本的优化器)的工作原理以及基本的过滤条件因子公式。CBO根据表的统计信息和操作的成本来选择最优的执行计划。
CBO的核心是通过计算每个可能执行计划的成本来决定最佳路径。当涉及到无绑定变量(BIND VARIABLES)且无直方图(HISTOGRAMS)的情况时,对于不同的比较运算符,有特定的过滤因子公式:
1. 等值比较(c1 = value):使用列的密度(density)作为过滤因子,即`c1.density`。
2. LIKE 比较(c1 like value):使用列的密度(density)作为过滤因子。
3. 大于比较(c1 > value):计算 `(Hi - value) / (Hi - Lo)`,其中Hi和Lo分别是列的最大值和最小值。
4. 大于等于比较(c1 >= value):在大于的基础上加1除以列的唯一值数量(num_distinct),即`(Hi - value) / (Hi - Lo) + 1/c1.num_distinct`。
5. 小于比较(c1 < value):计算 `(value - Lo) / (Hi - Lo)`。
6. 小于等于比较(c1 <= value):在小于的基础上加1除以列的唯一值数量,即`(value - Lo) / (Hi - Lo) + 1/c1.num_distinct`。
7. BETWEEN 比较(c1 between val1 and val2):计算 `(val2 – val1) / (Hi - Lo) + 2 * 1/c1.num_distinct`。
这些公式适用于所有列值非NULL的情况。在考虑NULL值时,会有调整因子,例如等值比较的过滤因子会变为 `c1.density * (1 - num_nulls/num_rows)`,其中`num_nulls`是列中的NULL值数量,`num_rows`是行总数。
CBO的引入带来了新的挑战,因为它基于成本创建执行计划,这意味着DBA和开发人员需要深入理解CBO的工作机制,以便提供准确的统计信息并避免“Garbage in, Garbage out”现象,即输入的统计信息质量直接影响优化器选择的执行计划质量。执行计划不再是静态的,而是随着系统状态和数据变化而动态调整,这对高可用性环境提出了更高的要求。
此外,文档还提到了CBO的发展和变化,暗示了Oracle会不断改进其优化器性能,以应对日益复杂的查询需求和大数据量的挑战。因此,持续学习和理解CBO的最新发展至关重要,这对于提升数据库性能和SQL调优能力有着直接的影响。
2009-11-26 上传
863 浏览量
107 浏览量
487 浏览量
810 浏览量
278 浏览量
188 浏览量

清风杏田家居
- 粉丝: 24
最新资源
- 自动生成CAD模型文件的测试流程
- 掌握JavaScript中的while循环语句
- 宜科高分辨率编码器产品手册解析
- 探索3CDaemon:FTP与TFTP的高效传输解决方案
- 高效文件对比系统:快速定位文件差异
- JavaScript密码生成器的设计与实现
- 比特彗星1.45稳定版发布:低资源占用的BT下载工具
- OpenGL光源与材质实现教程
- Tablesorter 2.0:增强表格用户体验的分页与内容筛选插件
- 设计开发者的色值图谱指南
- UYA-Grupo_8研讨会:在DCU上的培训
- 新唐NUC100芯片下载程序源代码发布
- 厂家惠新版QQ空间访客提取器v1.5发布:轻松获取访客数据
- 《Windows核心编程(第五版)》配套源码解析
- RAIDReconstructor:阵列重组与数据恢复专家
- Amargos项目网站构建与开发指南