聊聊Cardinality Feedback——一种CBO优化器尝试
从Oracle优化器发展历程上看,CBO已经取代RBO,成为今后优化器发展的主流。在CBO时代,执行计划SEP生成更加灵活、更加符合实际数据情况,执行效率更高。 在笔者之前的系列文章中,反复强调过CBO工作...
外键列索引缺失的潜在性能问题一例
在实际开发过程中,外键约束帮助我们维护数据库层面完整性。虽然很多新开发的系统将这部分验证转移到应用系统层面进行,但是无论从执行效率还是代码可靠性上看,适度的外键约束设置是有益无害的。 Ora...
Version Count数目过多诊断的方法
Oracle SQL调优是我们进行应用系统调优的一个重要方面。一个SQL的书写方式、执行计划和执行时间会显著的影响到系统的投产性能。本篇我们主要聊一下SQL version count数目过多,子游标过多的问题诊断。 ...
聊聊Oracle Optimizer相关的几个参数(下)
最后我们介绍几个可能影响到Optimizer的系统参数。 7、优化参数5——optimizer_index_caching 参数optimizer_index_caching的含义在于一个估算值,就是告诉优化器当进行索引路径检索的时候,特...
聊聊Oracle Optimizer相关的几个参数(中)
我们继续来介绍可以影响Oracle Optimizer工作的若干参数。 4、优化器参数2——cursor_sharing Cursor_sharing是Oracle优化器的另一个重要参数,可能也是我们日常讨论较多的一个参数。最开始的c...
Oracle Sequence不设置cache参数的几个潜在问题
在Oracle中,我们没有MYSQL和SQL Server可以使用的自增数据类型。大部分场景下,如果我们需要生成业务无关的(Business-Independent)主键列,序列Sequence对象是我们最方便的选择。 定义Sequence是很...
判断符合条件记录是否存在SQL若干
在实际开发中,我们会遇到各种访问数据表的需求。简单、高效一直是我们编写SQL语句的一个重要标准。如何用最少的系统开销,实现功能需求是我们需要关注的一个重要方面。 一个朋友问笔者:判断符合条件...
谈谈Buffer Cache中Keep和Recycle子池(下)
作为本系列最后的部分,我们一起来看看recycle池的使用情况。 6、子池对象定义和特性——Recycle池 recycle池是与keep池相对应的一个buffer cache子池。对recycle池的缓存数据块而言,同样是使...
谈谈Buffer Cache中Keep和Recycle子池(中)
上篇中我们分析了buffer cache的原理和子池划分。本篇来探讨keep池的使用细节。 5、子池对象定义和特性——Keep池 Keep池的使用有一些设置的因素。 SQL> alter system set db_ke...
谈谈Buffer Cache中Keep和Recycle子池(上)
Oracle是一个充分利用内存技术、缓存技术来解决数据库操作问题的DBMS。同外存储器(硬盘存储)相比,内存虽然具有断电遗失的问题,但是处理速度上却有显而易见优势。 Oracle早期进行的架构设计中,就...
Oracle SQL 调优健康检查脚本
我们关注数据库系统的性能,进行数据库调优的主要工作就是进行SQL的优化。良好的数据架构设计、配合应用系统中间件和写一手漂亮的SQL,是未来系统上线后不出现致命性能问题的有力保证。 在CBO时代,一...
分区索引(Partition Index)与SQL执行计划(下)
上面,我们讨论了Local Index的分区特性。如果我们将分区键作为前缀加入到索引中,是什么现象呢? SQL> drop index IDX_T_ID;Index dropped SQL> create index idx_t_owner on ...
分区索引(Partition Index)与SQL执行计划(中)
上篇(http://space.itpub.net/17203031/viewspace-712904)中,我们着重讨论了分区技术和全局索引在分区表中的一些现象。注意,我们讨论的是无前导索引,那么如果是有前导prefix索引,现象是如何的呢? ...
分区索引(Partition Index)与SQL执行计划(上)
分区技术(Partition)是Oracle从8版本开始推出的一个新技术。经历若干年的发展,分区技术不断成熟、在Oracle各产品线中处的地位愈发重要。从技术方案布局上看,分区技术还是属于Oracle VLDB(Very Large Dat...
几条Oracle数据库开发的原则归纳(下)
上篇中,我们主要介绍了进行Oracle数据库开发应该关注的几条原则问题,本篇继续讨论这个话题。 4、The Trap In Your Where Condition and Order/Group clause 我们进行的日常数据库开发,主要...
几条Oracle数据库开发的原则归纳(上)
目前绝大多数的MIS系统,都是基于对数据库的交互式操作,开发人员大部分的工作都是直接或者间接与数据库打交道。作为开发人员,正确的使用数据库技术,不但可以提高数据库相关开发的效率,而且可以有效的减少...
浅谈cursor_sharing取值对SQL共享的影响(下)
上篇我们介绍了Oracle SQL共享游标的机制,以及cursor_sharing参数EXACT取值作用。本篇我们继续介绍cursor_sharing参数的其他两个取值:FORCE和SIMILAR的实际含义。 4、 FORCE——强制共享执行...
浅谈cursor_sharing取值对SQL共享的影响(上)
声明:本篇实验思路感谢dbsnake老师指点。 在Oracle中,用户应用输入的SQL语句要进行所谓的Parse解析过程,用于生成执行计划,这也就是Query Optimizer的主要工作。在Parse中,有两种具体类型,被称为...
浅谈optimizer_mode优化器模式
Oracle query optimizer(查询优化器)是我们接触最多的一个数据库组件。查询优化器最主要的工作就是接受输入的SQL以及各种环境参数、配置参数,生成合适的SQL执行计划(Execution Plan)。 Query Opt...
说说Oracle Bind Graduation(下)
上篇(http://space.itpub.net/17203031/viewspace-704144)中,我们解释了与bind peeking等价的Oracle绑定变量技术bind graduation。本篇中,我们继续深入探讨该技术,和思考在bind graduation的环境下我们...