从10046看分区裁剪(下)
上篇中我们讨论了单纯数据表段分区的行为特性和方式。本篇我们继续讨论如果有索引对象参与,会是如何呢? 3、全局索引Global Index情况 Global Index是分区表中使用的一种默认索引方案。对于分区的数据表,Global Index形成的是一个覆盖所有分区的索引树结构,对应的是一个段对象。...
从10046看分区裁剪(上)
分区裁剪(Partition Pruning)是我们选择Oracle分区表的一个重要原因。在之前的文章中,笔者讨论过实践中选择分区的两个出发点:性能出发点和管理出发点。在海量数据库环境中,管理优势是我们选择分区策略和分区键的一个主要出发点,性能出发点主要强调的就是分区裁剪。分区裁剪是建立在Oracle多段结构(s...
Oracle 11g中dynamic sampling自动调节(auto-adjusted)机制
对Oracle而言,基于成本优化器CBO工作的基础是系统、对象统计量和CPU成本计算公式。而大多数情况下,收集统计量是一个异步单独的过程。无论是在9i,还是目前主流11g,发挥CBO作用都需要我们有一个统计量收集或者分析的过程。在9i时代,CBO和RBO是交替工作的。Oracle是不会“主动”的将对象统计量进行收集(...
使用11g dbms_parallel_execute执行并行更新(下)
上篇我们讨论了dbms_parallel_execute的工作方法、使用流程和特点。本篇继续来讨论其他两种划分Chunk方式。说明:对每种划分策略执行过程中,笔者都进行了不同的实验,来说明其工作特点。 4、By Number Col划分Chunk方法 应该说,使用rowid进行数据表划分可以带来很多好处。每个chun...
由于版本升级引发的SQL语句故障(续)
在之前的文章《由于版本升级引发的SQL语句故障》一文中,笔者介绍了由于版本从9i上升到10g,引起原先报表group by语句行为差异问题和解决方法。一个朋友提出另一种策略,笔者也在这里面讨论一下。 1、索引分组列 笔者文章中介绍的方法,其实大都是通过修改SQL语句或者隐含参数的策略...
使用Oracle TRCA分析10046 Trace RAW文件
Oracle 10046是我们常用的一种性能诊断工具。它可以将SQL执行过程中,每个步骤操作的内容、时间和对象等细节信息记录在Trace文件里面。 10046直接生成的Trace文件我们称为RAW格式文件,RAW格式记录了...
统计量收集Method_Opt参数使用(下)
上篇中,我们介绍了dbms_stats的重要参数method_opt的使用和默认参数。本篇中我们继续来讨论这个参数的作用。 4、method_opt的格式块 从官方介绍上看,method_opt格式是一个字符串结构,有如下结构:...
统计量收集Method_Opt参数使用(上)
对Oracle优化器CBO而言,统计量是至关重要的工作基础。在早期的CBO版本中,我们使用analyze table方法进行统计量收集。到10g之后,这种方法被精细度更高的dbms_stats包取代。相比analyze table方法,dbms_sta...
Oracle 11g新SQL Trace 10046方法
10046是每一个研究Oracle、进行SQL调优的朋友非常熟悉的工具。10046和10053两个诊断事件,可以方便的帮助我们了解Oracle CBO优化器行为和SQL执行行为。在商业非开源的Oracle情况下,我们很多的Internal知识都...
约束Constraint引起CBO执行计划变化一例
Oracle优化器经历RBO到CBO的演进过程,其能力已经远远超过“条条大路通罗马”的程度,而进入到智能化程度。那么,我们怎么样规划应用架构、设计数据表和写好SQL,就是我们一直关注的问题。在笔者之前的文章中...
聊聊Oracle 11g的Result Cache(四)
在之前的文章中,我们详细了解了Oracle 11g的Result Cache特性和机理。本篇我们讨论一下使用Table Annotation来控制数据表Result Cache使用的功能。 10、Table Annotation与Result Cache 在之前的介绍...
浅谈Oracle中隐式类型转换规律和影响
据大多数的Oracle性能问题,根源无外乎三类:架构设计问题、详细模块设计细节和SQL语句。从数量上看,三类性能问题中,SQL语句问题是我们最常见的一种性能问题点。开发DBA很大一部分日常工作精力是消耗在SQL语句调优...
聊聊Oracle 11g的Result Cache(三)
下面我们来介绍一下Result Cache特性对应的参数、视图和工具包。 6、Result Cache模式 在诸多的Result Cache相关参数中,Result Cache Mode是一个重要的开关参数。这个参数控制着当前Oracle是否使用客...
聊聊Oracle 11g的Result Cache(二)
本篇我们继续讨论Result Cache。 4、聊聊理论 在之前的文章中,我们已经介绍了Result Cache的基本使用方法。这部分我们讨论一下Oracle 11g Result Cache的深层原理。 从参数看,Oracle提供了Cl...
聊聊Oracle 11g的Result Cache(一)
缓存一直是解决信息、数据访问效率的一个重要方法。常见的缓存包括内存、前端特殊数据结构等。从宏观角度看,缓存的本质是利用空间来换取时间的手段。数据信息虽然都是保存在系统后端的数据库或者文件系统中...
函数索引的两个应用场景示例(下)
上篇(http://space.itpub.net/17203031/viewspace-765160)中,我们讨论了一个使用函数索引,解决倾斜列查询的问题。本质上说,这个问题的核心在于前期规划和调研阶段,对于JOB_LOG数据表没有一个清晰的认识...
使用11g多列统计量提高多列group by操作估算值
在CBO时代,执行计划决策过程完全取决于各个备选执行计划的成本预估算值。提高统计量精准度、优化CBO对于每个执行步骤的成本估算值是我们进行SQL优化的一个重要工作方向。 1、从多列group by估算row ...
How to compare the CBO estimate Row-Source and Actual Row Returned
Compared with the outdated RBO, one significant feature of CBO is that the SEP (SQL Execution Plan) is generated based on Data Object statistic and CBO internal Cost formula. Different SEPs ha...
Applying “Incremental Statistic” for Oracle Big Partition Table
In CBO, Statistic is critical important for Optimizer. Precise and timely statistics will truly reflect the data distribution and volume, and generate wiser SQL Execution Plan (SEP). After yea...
从共享游标shared cursor角度看forall批量绑定
在Oracle PL/SQL代码的编写中,我们一直倾向于利用forall批量绑定来替代传统的for循环语句。这样做的目的在于提高PL/SQL代码的处理效果。 那么,这么做我们可以获取到什么好处呢?从官方文档上的陈述...