Oracle 开发人员分析SQL 执行计划的关注点
繁琐复杂的执行计划、可能迷了开发人员的眼、导致一条性感又傻X的SQL 在服务器上跑得特欢乐 有介于此、重点抓住几个部分、至于其他的嘛、当然是、非礼勿视咯、、 ㈠ 返回行的数量 Oracle优化器是基于成本的、评估成本的一个主要指标便是查询多少行 &nb
Statspack 报告的分析经验
不需要通读、有重点地看、看以下 10 点: ① Load Profile ② Instance Efficiency Percentages ③ Top 5 Wait Events ④ SQL ordered by Gets ⑤ SQL ordered by Reads ⑥ Tablespace IO Stats ⑦ Enqueue activity ⑧ PGA Aggr Target Stats ⑨ Rollback Segment Stats &nb
Oracle Tuning Log File Sync 等待事件的几种策略
在一个频繁 commit/rollback 或磁盘 I/O 有问题、大量物理读写争用 那么、我们便会经常瞧见 LOG FILE SYNC 等待事件出现在 TOP EVENTS 中 评估 LOG FILE SYNC等待事件的指标是平均等待时间、以及 AWR 后续的 WAIT EVENT HISTOGRAM 对于 OLTP、平均等待时间 7 ms算正常、正常情况下平均等待时间不会超过 10 ms 下面给出几种优
Oracle 技术支持之现场优化的思维路径
性能调优是每个DBA职业生涯中都能遇到的任务 大到世界五百强的核心系统,小到乡镇企业的进销存,几乎都会有要调优的时候 面对形形色色的系统,林林总总的需求,调优的手段也是丰富多彩 定位问题,分析问题,解决问题环环相扣,缺一不可,且又手段多样,效果也各有千秋 &nbs
AWR 分析 :独上高楼,望见 AWR 路
Automatic Workload Repository 是 10g 引入的一个重要组件 存贮着近期一段时间内数据库活动状态的详细信息、信息保留默认是7天 AWR 的前身是 Statspack、而 Statspack 是公开源代码的 因此,关于Statspack的资料,还有Statspack的源代码,都是理解AWR的一个有用的辅助 AWR 者、乃 sys 拥有、粒度为快照、存
深入理解Oracle优化器(3):动态采样
动态采样的统计信息不会记录到视图,有时候分析过的表也会参与评估 对CBO有效,因为RBO不需要统计信息,所以动态采样没意义 ㈠ 动态采样的作用 ① 10G开始,RBO彻底退出了历史舞台,CBO依赖的是充分的统计分析信息  
深入理解Oracle索引(7):用实验数据观察从B-tree索引→复合索引→Bitmap索引所消费的CPU和I/O
环境:sys@ORCL> !sqlplus -v SQL*Plus: Release 10.2.0.1.0 - Production sys@ORCL> !uname -a Linux Think 2.6.18-308.el5xen #1 SMP Fri Jan 27 17:59:00 EST 2012 i686 i686 i386 GNU/Linux hr@ORCL> conn sh/sh Connected. sh@ORCL> select index_name from user_indexes where table_name=\'CUSTOMERS\'; INDEX_NAME ------------------------------ CUSTOMERS_MARITAL_BIX CUSTOMERS_YOB_BIX CUSTOMERS_PK CUSTOMERS_GENDER_BIX sh@ORCL> drop index CUSTOMERS_MARITAL_BIX; Index dropped. sh@ORCL>
深入理解Oracle优化器(2):该不该翻译Carnality?
感觉cardinality翻译成基数很不好,误导科技工程人员! 我觉得最初翻译这词的翻译者就没有理解它本身的意思,所以字典上就会误导很多人 基数给人的感觉是集合的全部,比如说我国人口基数大,有13亿 而cardinality应该是给集合应用某种条件后的输出数
Oracle直接路径加载--append的深度解析
㈠ 直接路径加载和buffer cache 直接路径插入的数据不经过buffer cache,从PGA直接把数据格式化成Oracle块 然后由普通的Oracle Server Process进程把数据块写入数据文件 因为不经过buffer cache,所以不需要DBWn介入 假如有表a,现要将a中的数据插入表b
浅谈Oracle的高水位线--HWM
高水位是记录段里能容纳数据的上限,高水位存在段里 全表扫先读段头块,而后在段头块里面找到HWM 下面用实验由内而外来理解Oracle的HWM--t表有一条数据 hr@ORCL> select * from t; ID NAME ---------- ---------- 1 AAAAA --找t段的段头块 hr@ORCL> select header_file,header_block from dba_segments where segment_name=\'T\' and owner=\'HR\'; HE
深入理解Oracle优化器(1):倾斜列(skew)和histograms
㈠ Histograms 柱状图?直方图?其实这俩是一个概念,在这里Think直接用histograms来称呼 histograms可以这么理解就是一个列上数值的大致分布的密度(density)和范围(range) 通俗一些就是CBO用histgrams来更加准确的判断按照某个条件对每一列查询能返回多
深入理解Oracle调试事件:10046事件详解
之前也写过一篇10046的文章:10046简介 今天,Think想和大家一起共同深入去理解一下Oracle的这些调试事件 10046事件是SQL_TRACE的扩展,被戏称为"吃了兴奋剂的SQL_TRACE" 有效的追踪级别: ① 0级:SQL_TRACE=FASLE ② 1级:SQL_TRA
理清全表扫描和高水位,行预取的关系
以前写过一篇博客,调侃了一下全表扫,今天继续,感觉对全表扫的认识还是不够:侃侃全表扫 ㈠ 全表扫描与HWM 在Table Access Full中,数据库引擎顺次读取表在HWM下的所有数据块 全表扫描可能是不够理想,特别是表包含大量空的或者接近空的块时 很
记一条子查询的SQL优化
表a 中有上百万条记录,且不断有新记录插入。 现在要汇总此表中小于某个时间的记录条数,SQL两种写法如下: 写法一:select count(*) from a where date < to_date(\'20100101\',\'YYYYMMDD\') ; 写法二:select count(*) from ( select * from a where date < to_date(\'20100101\',\'YYYYMMDD\') ) ; 结果发
浅析导致数据库性能问题的常见原因
㈠ 不合理的大表全表扫描 详见:点击打开链接 v$session_longops视图记录了超过6秒的所有SQL语句 这其中绝大部是全表扫描的语句! ㈡ 语句共享性不好 常出没在OLTP,由于app没有合
侃侃全表扫描
何谓全表扫? 不合理地消耗大量资源的数据访问方式 为啥会有全表扫? 原因大致如下: &
理解物化视图(1)快速建立高效的物化视图的方法
环境:sys@ORCL> select * from v$version where rownum=1; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod sys@ORCL> !uname -r 2.6.18-308.el5xen conn / as sysdbagrant advisor to sh;grant create materialized view to sh; conn sh/sh drop table t purge;create table t as select * from dba_objects --未建立物化视图前的select代价开销sh@ORCL> select owner,object_type,cou
关注SQL执行计划中的两个比率
环境:sys@ORCL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod PL/SQL Release 10.2.0.1.0 - Production CORE 10.2.0.1.0 Production TNS for Linux: Version 10.2.0.1.0 - Production NLSRTL Version 10.2.0.1.0 - Production ㈠ 返回行与逻辑读的比率 &
SQL tuning和shared pool结构的关联介绍
影响性能的计算机资源大抵三种:Memory、CPU和I/O。通过调整SGA、PGA充分利用物理MEMORY,通过并行处理充分利用CPU,通过调整I/O分布充分利用硬盘处理力。 server process和PGA是“一条绳上的两个蚂蚱”,故sp还有个雅号叫
用二叉树的后序遍历来看oracle执行计划的执行顺序
我们先用一个小表来,来说明一下,oracle执行计划该注意哪些地方。 hr@ORCL> set autotrace traceonly hr@ORCL> select * from t; 模糊比较两条sql的优劣时,建议先查看以下两个值: Cost (%CPU):cpu代价,这个值要代数和。比如,这里是3+3=6 consistent gets:这个值一般要多执行几次!让他稳定下来,才有比较的意义。 Execution Plan : -------------------------------------------------