简介:本专栏作者黄玮,通过对Oracle高性能SQL引擎的深入剖析,深刻揭示了Oracle SQL的优化与调优机制、核心技术,以及性能优化的思想方法,是作者十余年工作经验与研究心得的结晶,包含大量技巧与最佳实践。
9.3 物理设计优化 正如我们在前面对自动调优的分析所说的那样,物理设计不能单纯从单条语句的角度来考虑。在我们进行快速调优时,需要开发人员或DBA能掌握系统中的物理对象的使用情况,从而权衡物理设计的改变带来的收益与维护
第9章. 快速调优思路 截至本章,我们基本上已经对所有SQL优化及自动调优技术进行了分析和阐述,对于SQL的整个执行和处理(包括优化与调优)过程有比较清楚的认识。在此基础上,我们就可以归纳出一套快速调优的思路。尽管
8.5 SQL 访问建议器 在我们对应用进行调优的过程,通过改进物理设计、使目标语句的执行计划选择代价更小的访问路径(AccessPath)来达到优化目的是一项重要手段,例如,创建新的索引、物化视图(Materiali
8.4 SQL 性能分析器 从前面的分析可以看出,由于优化建议器会对每条语句从多个方面分析,以找到最佳的调优方法,因此,这一过程也是相当消耗资源的。在调优建议器的参数当中,有多个参数是用于直接或间接控制其对资源的消耗,例如
8.3 Oracle 自动调优 Oracle自动调优是在10g引入的一个新特性。它可以从多个方面对SQL语句进行分析,给出详细的优化建议。并且在11g当中,这些优化建议可以被自动实施。与其它第三方调优工具相比,由于自动
8.2.3 优化器从基线中选择执行计划 当语句存在已激活且被接受的基线执行计划时,优化器在对SQL语句进行编译时,会将当前解析出的执行计划与基线当中的执行计划进行比较,采用代价最低的执行计划。过程如下:•优化器采用基于代价的原则,
8.2.2 进化历史执行计划 前面提到,当SPM自动捕捉到了语句不同于已经存在的执行计划基线,会将捕捉到的执行计划作为历史数据存储到数据字典当中;此外,优化建议器在优化过程中发现了性能低于当前的执行计划时,也会建议用户考虑将它
8.1.4 使用存储概要 要使用公共存储概要,需要通过设置参数USESTOREDOUTLINES来激活某一类存储概要;要是有私有存储概要,则需要设置参数USEPRIVATEOUTLINES。参数值为DEFAU
第8章. Oracle 调优技术 SQL优化(Optimize)和调优(Tuning)是从不同阶段和不同角度来保证SQL运行性能的方法。前者指的是在SQL运行之前获得代价最低的执行计划以保证性能;而后者通常是指到SQL运
7.1.1 递归调用 递归调用(RecursiveCalls)这一统计数据并不直接反映当前语句的性能。但是,在我们对语句进行调优过程中,不能忽视该数据。它反映了在执行该语句时,Oracle还执行了多次对其他语句或内部过
上接下文-大对象直接读取 可以看到,对其进行并行查询时,是通过物理直接读访问的高水位线下被格式化的810块数据块。参数“smalltablethreshold”是允许在会话级别被修改的,当我们该值修改为为大于等于表中
大对象直接读取 当在进行并行查询操作时,通常意味着操作对象可能是一些大数据量对象。而如果这些数据被读入共享缓存,将会占用大量内存空间、降低其他数据块的内存命中率,同时也会增加该操作本身的资源消耗。为了减少大对象占据共
o 哈希关联 哈希关联也是一个需要有特定工作区内存来完成的操作,它同样利用了可调节的内存分配技术,当可用内存不足时(无法满足优化模式运行的需要),也会产生直接读写临时磁盘。我们前面提到,哈希管理算法主要有三种:
排序运行性能 了解了排序算法后,我们再来看排序操作的运行性能。由前面的算法描述我们知道,是否进行内存排序是由工作区大小和排序数据大小决定的:而排序数据大小小于工作区大小则能进行内存排序。内存中的排序数据也需要
7.2.2 物理读分析 逻辑读所代表的是语句需要访问的数据块次数。而所读取的数据块,可能来自于已经缓存在BufferCache中的内存块,也可能来自于物理磁盘。当在缓存中找不到所要读取的数据块时,则需要发出系统发出磁盘读
当前模式读分析 在进行数据修改时,内容需要被修改的数据块以及相关的回滚数据块需要以当前模式读入内存,其他数据块则以一致性模式读入内存。因此,更新语句的逻辑读通常包含了这两部分读数。而数据访问方式不同,也会导致数据
o 其他类型索引 基于基本的存储格式,Oracle还提供了一些其他类型的索引,下面做一个简要介绍:反转键值索引(ReverseKeyIndex)反转键值索引是将索引字段值按字节为反转后再作为键值存储。例如,
7.2 运行性能深度分析 本章节将详细分析各种常见的导致运行性能统计数值增加的操作及其内部行为的深入探索。通过这样的分析,使得我们在进行语句调优时,能够通过运行性能统计数据迅速的定位到语句的瓶颈所在、并且着重降低通过优化