摘要:
oracle数据库系统的架构及其复杂,其提供的特性也非常的多。作为一种关系型数据库,oracle提供的基本特性:transactionconcurrencyread consistent而支撑这些特性的必不或缺的组件组成了Oracle Core。如下面的缩略图所示:这个oracle系统的架构图涵盖了... 阅读全文
摘要:
命中率模型是在owi之前比较常用的一种诊断性能问题的方法,通过命中率的计算,发现系统中的一些设置是否合理,当命中率不高的时候,通过调整一些参数和设置,提高命中率,有效的提高系统的性能和吞吐量。但当系统的命中率很高的时候,系统的性能问题和瓶颈就无法使用命中率模型来有效的定位,因为命中率说到底是一种平均... 阅读全文
摘要:
系统现在很慢”似乎是对系统的性能最常用的抱怨了,但究竟慢到什么程度,如何来界定慢,可能需要对性能进行量化,对于OS来说,大致主要分为cpu,内存,磁盘,网络等组件,对这些维度的性能量化,不但可以更准确的定位到系统的瓶颈,更是做容量评估的基础。下面先看看cpu。 Cpu的性能主要跟缓存,主频,指令集,... 阅读全文
摘要:
Buffer sort引发的血案 今天遇到的一个问题,在线系统上,有两张表,test1大概50G,test2大概200G,需要查询出来test1表中部分记录,并且这些记录不存在test2表中。于是就写了一个sql:select t1.* from test1 t1, test2 t2 where... 阅读全文
摘要:
稳定执行计划 1 策略: Oracle的sql 执行计划在一些场景下会发生变化,导致系统会发生不可知的情况,影响系统的稳定性,特别是关键业务的sql。比如下面的场景: 统计信息过老,重新收集了统计信息。为表添加了新的分区,删除分区。而oracle提供的稳定执行计划的策略也大致有:存储纲要(sto... 阅读全文
摘要:
对于在线的繁忙业务表的任何操作都可能带来意想不到的风险。一张业务表,对partition key进行升位,其步骤是:rename原表新建临时表交换分区到临时表升位临时表的字段的长度交换临时表到第二张临时表rename第二种临时表为业务表整个的操作过程如果顺利,预计在10s左右,如果放在文件中,速度会... 阅读全文
摘要:
对于实际的业务系统,通常有一些热点的表,insert和delete的量非常大,这个时候就会发现一些查询语句的逻辑读比较偏高,这时可能就是oracle在构建一致性块的进行的consistent read。下面做一个测试看下:第一步准备数据:create table test(col1 varchar2... 阅读全文
摘要:
oracle对于子查询的支持做的很好,oracle optimizer会对inline view进行query transfomation,即视图合并,不过也经常带来意想不到的问题。下面是一个inline view的merge的例子:1, 创建临时表1 create table test1 as ... 阅读全文
摘要:
oracle的optimizer会对一些sql语句进行查询转换,比如:合并视图子查询非嵌套化inlist转换下面讲讲遇到的in list转化优化的案例:create table test(col1 varchar2(12)col2 numberext varchar2(4000));creat... 阅读全文
摘要:
Oracle在9i或者早期的版本,对于性能优化方面,主要采用命中率模型,后面的版本,也保留着命中率模型,比如在awr报告中,Instance Efficiency Percentages (Target 100%)就有关于buffer cache,library cache等相关的命中率。命中率在性... 阅读全文