future2012lg

博客园 首页 新随笔 联系 订阅 管理
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 40 下一页

2013年8月7日 #

摘要: 我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相对应的资源的相关信息,从而可确定出产生瓶颈的类型及其对象。 v$session_wait的p1、p2、p3告诉我们等待事件的具体含义,根据事件不同其内容也不相同,下面就一些常见的等待事件如何处理以及如何定位热点对象和阻塞会话作一些介绍。 db file scattered read DB 文件分散读取(太多索引读,全表扫描-----调整代码,将小表放入内存)这种情况通常显示与全表扫描相关的等待。当全表扫描被限制在内存时,它们很少会进入连续的缓冲区内,而是分散于整个缓冲存储器中。如果这个数目很大,就表明该表找不 阅读全文
posted @ 2013-08-07 22:14 future2012lg 阅读(376) 评论(0) 推荐(0) 编辑

摘要: 使用索引是我们面对海量数据搜索是一种常用的手段。通过有效的索引访问,可以使我们更快的访问到需要的数据,减少物理、逻辑IO,从而提高系统性能。在CBO时代,Oracle对于提交SQL的执行路径是有所选择的。一个select是走Index还是走Full Table Scan,或者别的路径,要根据Oracle对表列的统计信息收集结果加以计算出的执行计划成本而确定。在计算索引成本的公式中,索引的clustering factor是一个重要参考信息。简单的说,clustering factor就是反映数据表行存储有序程度与索引有序程度对照的指标。如果这个值越大,说明在进行索引搜索是,需要获取的数据块数量 阅读全文
posted @ 2013-08-07 21:56 future2012lg 阅读(546) 评论(0) 推荐(0) 编辑

2013年8月5日 #

摘要: Oracle对表做全表扫描的时候 ,会扫描完HWM以下的数据块。如果某个表delete(delete操作不会降低高水位)了大量数据,那么这时对表做全表扫描就会做很多无用功,扫描了一大堆数据块,最后发现块里面居然没有数据。通常,在对表做了大批量delete操作之后,就应该马上降低表的高水位,可以使用shrink命令或者altertabletable_namemove降低表的高水位。在降低表的高水位之后,表上面的索引会失效,因为表的rowid更改了,这个时候需要rebuild索引。如何求出段的高水位?其实很简单,首先对表收集统计信息,然后查询DBA_TABLES的blocks,以及empty_bl 阅读全文
posted @ 2013-08-05 22:39 future2012lg 阅读(768) 评论(0) 推荐(0) 编辑

2013年8月1日 #

摘要: http://www.hellodba.com/reader.php?ID=76〈=cn数据库的作用就是实现对数据的管理和查询。任何一个数据库系统,必然存在对数据的大量读或者写或者两中操作都大量存在。IO问题也往往是导致数据库性能问题的重要原因。在这篇文章中,主要帮助大家在理解Oracle的读写操作... 阅读全文
posted @ 2013-08-01 21:59 future2012lg 阅读(1364) 评论(0) 推荐(0) 编辑

摘要: 很多网友对系统内频繁发生的db file sequential read等待事件存有疑问,那么到底在那些场景中会触发该单块读等待事件呢?在我之前写的一篇博文中总结了db file sequential read等待事件可能发生的场景,在这里再share以下:”db file sequential read”单块读等待是一种最为常见的物理IO等待事件,这里的sequential指的是将数据块读入到相连的内存空间中(contiguous memory space),而不是指所读取的数据块是连续的。该wait event可能在以下情景中发生:最为常见的是执行计划中包含了INDEX FULL SCAN 阅读全文
posted @ 2013-08-01 21:56 future2012lg 阅读(312) 评论(0) 推荐(0) 编辑

摘要: 基本概念Local Coordinator:在分布事务中,必须参考其它节点上的数据才能完成自己这部分操作的站点。Global Coordinator:分布事务的发起者,负责协调这个分布事务。Commit Point Site:在分布事务中,首先执行COMMIT或ROLLBACK操作的站点。一般情况下,应该把存储关键数据的站点作为Commit Point Site。因为Commit Point Site和其它站点不一样,从来不会进入prepared状态,所以不会存在IN-DOUBT事务。可以设置初始化参数COMMIT_POINT_STRENGTH,在分布式事务中,会根据这 个值的大小来确定Com 阅读全文
posted @ 2013-08-01 21:16 future2012lg 阅读(462) 评论(0) 推荐(0) 编辑

2013年7月31日 #

摘要: db file scattered read 等待事件:我们经常会见到db file scattered read等待事件,在生产环境中,这个等待事件可能更为常见。这个事件表明用户进程正在读数据到Buffer Cache中,等待直到I/O调用返回。db file scattered read发出离散读,将存储上连接的数据块离散的读入到多个不连续的内存位置。Scattered Read通常是多块读,在Full Table Scan或Fast Full Scan等访问方式下使用。Scattered Read代表Full Scan,当执行Full Scan读取数据到Buffer Cache时,通常连 阅读全文
posted @ 2013-07-31 23:15 future2012lg 阅读(429) 评论(0) 推荐(0) 编辑

摘要: 转载:http://www.dbtan.com/2010/04/db-file-sequential-read.htmldb file sequential read (数据文件顺序读取):db file sequential read是个非常常见的I/O相关的等待事件,通常显示与单个数据块相关的读取操作,在大多数的情况下,读取一个索引块或者通过索引读取一个数据块时,都会记录这个等待。这个等待事件有3个参数P1,P2,P3,其中P1代表Oracle要读取的文件的绝对文件号,P2代表Oracle从这个文件中开始读取的起始数据块号,P3代表读取的BLOCK数量,通常这个值为1,表明是道单个BLOC 阅读全文
posted @ 2013-07-31 23:14 future2012lg 阅读(2617) 评论(0) 推荐(0) 编辑

摘要: 这里就以INDEX_JOIN为例,简单描述一下如何影响Oracle的执行计划的产生。控制执行计划最简单的方法莫过于使用HINT,这篇文章要介绍的是,在不使用HINT的情况下,让Oracle产生INDEX_JOIN执行计划。下面先构造查询所用的表,问题中使用的表是HR用户下的EMPLOYEES。如果hr用户不存在,Oracle9i可以通过$ORACLE_HOME/demo/schema/human_resources/hr_main.sql来创建用户。SQL> CREATE TABLE EMPLOYEES AS SELECT * FROM HR.EMPLOYEES;表已创建。SQL> 阅读全文
posted @ 2013-07-31 22:29 future2012lg 阅读(1819) 评论(0) 推荐(0) 编辑

摘要: Oracle优化器介绍本文讲述了Oracle优化器的概念、工作原理和使用方法,兼顾了Oracle8i、9i以及最新的10g三个版本。理解本文将有助于您更好的更有效的进行SQL优化工作。RBO优化器RBO是一种基于规则的优化器,随着CBO优化器的逐步发展和完善,在最新的10g版本中Oracle已经彻底废除了RBO。正在使用Oracle8i或9i的人们或多或少的都会碰到RBO,因此在详细介绍CBO之前,我们有必要简单回顾一下古老的RBO优化器。在RBO中Oracle根据可用的访问路径和访问路径的等级来选择执行计划,等级越高的访问路径通常运行SQL越慢,如果一个语句有多个路径可走,Oracle总是选 阅读全文
posted @ 2013-07-31 22:23 future2012lg 阅读(359) 评论(0) 推荐(0) 编辑

上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 40 下一页