TOP 第五章 之 CBO配置策略

本文介绍了配置Oracle查询优化器的基本步骤,包括初始化参数的设置、系统统计和对象统计的收集等,以确保查询优化器能够为大部分SQL语句生成高效的执行计划。

继续贴出 Troubleshooting Oracle Performance 一书第五章《配置查询优化器》的翻译稿的部分节录。本章初稿译者胡怡文.

配置还是不配置

在此套用一句肯尼亚谚语 ,"配置查询优化器的代价是昂贵的,但值得为此付出。"(注1)实际上,我曾见过许多低估良好配置重要性的站点。有时,我甚至和一些人进行激烈的讨论,他们认为"没有必要费心为每一个数据库单独配置查询优化器,我们已经有一套初始化参数,而且在所有数据库上屡试不爽。"通常,我首先会这样回答这个问题:"如果一个配置集能适用于所有数据库,为什么Oracle要介绍二十多个专用于查询优化器的初始化参数?甲骨文公司知道自己在干什么。如果存在这样一个万能的神奇配置,他们会以默认的方式提供,还可以省去一大堆初始化参数的正式说明文档。"接下来我会详细解释这个神奇配置不存在的原因:

  • 每个应用都有自身的需求和负载概要,并且
  • 每一个由不同的软硬件构成的系统,都有其自身的特点。

如果遇到麻烦的是顾客,通常我也会提醒他们"您找我是因为你遇到性能上的问题,对吧?由于某种原因,应用没有达到最佳表现,但数据库也得为目前的情况负一部分责任...所以,让我们着手处理这个问题吧。"

据说,至少从Oracle9iR2开始,查询优化器就能良好运转了,这意味着它能够为大多数注2SQL语句生成高效的执行计划。然而更准确的说,仅在查询优化器配置正确且数据库的设计能够发挥其所有特性时才是如此。这件事我已再三强调,同时也要记住查询优化器的配置不仅包括初始化参数的设置,也包括系统统计和对象统计。

配置路线图

既然没有这样的神奇配置,就需要一个可靠的步骤来帮助我们。图5-1汇总了我采用的主要步骤。

CBO_Configure.png 图5-1. 配置路线图的主要步骤 下面是对图中标有数字的步骤的描述
  • 1. 总是需要调整的两个初始化参数:optimizer_mode和db_file_multiblock_read_count。 就如你将在本章后面看到的那样,后者对查询优化器本身来说已经不再那么重要。然而,个别操作的性能还将严重依赖它。
  • 2. 这步要调整的几个初始化参数通常默认已经被设置为比较合适的值,所以这步显得不是十分重要。然而无论如何,这一步的目的是要启用或禁用查询优化器的某些特性。
  • 3. 既然系统统计和对象统计为查询优化器提供了至关重要的信息,那么它们必须被收集。
  • 4. 根据初始化参数workarea_size_policy的不同,在内存中存储数据时选择是手动还是自动调整内存的使用量。做出选择后,其它初始化参数值在第五步或第六步设置。
  • 5. 如果上面选择的是自动设置工作使用的内存量,那么需要设置初始化参数pga_aggregate_target。
  • 6. 如果选择手工设置的话,实际使用的内存量分别取决于对每一种不同操作所设置的阀值。基本上,对每一种不同的操作都要设置一个特殊的初始化参数。
  • 7. 当刚才的设置生效后,就开始测试应用。在测试期间,对没有表现出期望性能的那部分收集执行计划。通过分析执行计划,你应该能够推测出问题所在。本阶段需要注意,关键是要识别出一般的、非特殊的现象。比如说,需要注意查询优化器是否使用了过多或过少的索引,又或是否没有正确识别约束。
  • 8. 如果查询优化器能够为大多数SQL语句提供高效的执行计划,说明配置成功。否则,需要进行第九步。
  • 9. 假如查询优化器倾向于使用过多或过少的索引,又或是嵌套循环的话。通常需要调整初始化参数optimizer_index_caching和optimizer_index_cost_adj修正这个问题。如果查询优化器错误地估计了基数(cardinality)。有可能是某些直方图丢失或需要调整。在Oracle 11g中,扩展的统计(extended statistic)也能够提供一些帮助。

根据图5-1,从第1步到第6步设置的初始化参数不宜改变。当然,这也不是铁板钉钉的。如果在第九步调节了索引相关的初始化参数和直方图后,还没有达到预期的效果。就有必要从头再来了。还有一点要提一下,既然有些初始化参数的设置对系统统计有影响,在调整它们以后,必须重新计算一下系统统计值。


  • 注1:那句肯尼亚谚语是"和平的代价是昂贵的,但值得为此付出。" 可以在http://www.quotationspage.com/quote/38863.html. 找到这个引用。
  • 注2:和我们在其它可想像的活动中一样,在软件开发中完美也是不可信任的。即使你和Oracle都不希望这样,查询优化器也是如此。因此,应当期盼只有少数的SQL语句需要手动调整的介入(这个话题放在第七章)。
--EOF--
同步定位与地图构建(SLAM)技术为移动机器人或自主载具在未知空间中的导航提供了核心支撑。借助该技术,机器人能够在探索过程中实时构建环境地图并确定自身位置。典型的SLAM流程涵盖传感器数据采集、数据处理、状态估计及地图生成等环节,其核心挑战在于有效处理定位与环境建模中的各类不确定性。 Matlab作为工程计算与数据可视化领域广泛应用的数学软件,具备丰富的内置函数与专用工具箱,尤其适用于算法开发与仿真验证。在SLAM研究方面,Matlab可用于模拟传感器输出、实现定位建图算法,并进行系统性能评估。其仿真环境能显著降低实验成本,加速算法开发与验证周期。 本次“SLAM-基于Matlab的同步定位与建图仿真实践项目”通过Matlab平台完整再现了SLAM的关键流程,包括数据采集、滤波估计、特征提取、数据关联与地图更新等核心模块。该项目不仅呈现了SLAM技术的实际应用场景,更为机器人导航与自主移动领域的研究人员提供了系统的实践参考。 项目涉及的核心技术要点主要包括:传感器模型(如激光雷达与视觉传感器)的建立与应用、特征匹配与数据关联方法、滤波器设计(如扩展卡尔曼滤波与粒子滤波)、图优化框架(如GTSAM与Ceres Solver)以及路径规划与避障策略。通过项目实践,参与者可深入掌握SLAM算法的实现原理,并提升相关算法的设计与调试能力。 该项目同时注重理论向工程实践的转化,为机器人技术领域的学习者提供了宝贵的实操经验。Matlab仿真环境将复杂的技术问题可视化与可操作化,显著降低了学习门槛,提升了学习效率与质量。 实践过程中,学习者将直面SLAM技术在实际应用中遇到的典型问题,包括传感器误差补偿、动态环境下的建图定位挑战以及计算资源优化等。这些问题的解决对推动SLAM技术的产业化应用具有重要价值。 SLAM技术在工业自动化、服务机器人、自动驾驶及无人机等领域的应用前景广阔。掌握该项技术不仅有助于提升个人专业能力,也为相关行业的技术发展提供了重要支撑。随着技术进步与应用场景的持续拓展,SLAM技术的重要性将日益凸显。 本实践项目作为综合性学习资源,为机器人技术领域的专业人员提供了深入研习SLAM技术的实践平台。通过Matlab这一高效工具,参与者能够直观理解SLAM的实现过程,掌握关键算法,并将理论知识系统应用于实际工程问题的解决之中。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值