随笔分类 -  Oracle Tuning

Tuning no ending...
摘要:--Oracle高水位2---------------------2013/11/24一、什么是水线(High Water Mark)?所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称为"high water mark"或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment。HWM通常增长的幅度为一次5个数据块,原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很象一个水库的历史最高水位,这也 阅读全文
posted @ 2013-11-24 17:49 胡.杰 阅读(231) 评论(0) 推荐(0) 编辑
摘要:--Oracle 高水位线和全表扫描--------------------------2013/11/22高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式。高水位线对全表扫描方式有着至关重要的影响。当使用delete 操作表记录时,高水位线并不会下降,随之导致的是全表扫描的实际开销并没有任何减少。本文给出高水位线的描述,如何降低高水位线,以及高水位线对全表扫描的影响。一、何谓高水位线如前所述,类似于水库中储水的水位线。只不过在数据库中用于描述段的扩展方式。可以将数据段或索引段等想象为一个从左到右依次排开的一系列块。当这些块中未填充任何数据时,高水位线位于块的最左端(底端)随着记录 阅读全文
posted @ 2013-11-22 11:26 胡.杰 阅读(518) 评论(0) 推荐(0) 编辑
摘要:--ORACLE索引监控的简单使用-------------------------2013/11/20说明: 应用程序在开发时,可能会建立众多索引,但是这些索引的使用到底怎么样,是否有些索引一直都没有用到过,这需要我们对这些索引进行监控,以便确定他们的使用情况,并为是否可以清除它们给出依据。 本文介绍两种方式: 第一:开启监控功能; 第二:查看历史的执行计划,进行分析;环境: SQL> select * from v$version; BANNER ---------------------------------------------------------------- Orac 阅读全文
posted @ 2013-11-20 11:00 胡.杰 阅读(499) 评论(0) 推荐(0) 编辑
摘要:理解LGWR,Log File Sync Waits以及Commit的性能问题一.概要:1. Commit和log filesync的工作机制2. 为什么log file wait太久3. 如何去度量问题出在那里呢?二.log file sync等待的原因1. 默认情况下我们commit一个事务是要等待logfile sync,这其中包括:(1)User commit(用户提交的统计信息可以通过v$sesstat来查看)(2)DDL-这一部分主要是由于递归的事务提交所产生(3)递归的数据字典DML操作2.Rollbacks导致log file sync等待 (1)Userrollbacks-. 阅读全文
posted @ 2013-11-14 11:32 胡.杰 阅读(1190) 评论(0) 推荐(0) 编辑
摘要:性能指标解释篇-------------------2013/10/151. I/O相关db block gets --用当前方式从buffer cache中读取的总块数,一般在更改语句中最常见,因为我们应该只更改该块最新的拷贝consistent gets --在buffer cache中一个块被请求进行一致性读取的次数。一致性读取可能需要读取undo的信息,这些信息也在内physical reads --从数据文件到buffercache物理读的数目,会产生物理I/O,大多数物理读取的后面都直接跟着一个逻辑I/O逻辑读=db block gets+consistent getsbuf... 阅读全文
posted @ 2013-10-15 09:53 胡.杰 阅读(231) 评论(0) 推荐(0) 编辑
摘要:各种表连接测试--------------------2013/10/03Sort Merge Join--从实验可以发现,Sort Merge Join如它的名字一样,先进行Sort,然后再Merge。这里的表很小,默认采取了Sort Merge Join的方式进行连接。SQL> select t.ename,p.dname from emp t join dept p on t.deptno=p.deptno;ENAME DNAME---------- --------------CLARK ACCOUNTINGKING ACCOUNTINGMILLER ACCOUNTINGJONE 阅读全文
posted @ 2013-10-03 11:28 胡.杰 阅读(261) 评论(0) 推荐(0) 编辑
摘要:多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP------------------------------------------------------2013/10/03多表之间的连接有三种方式:Nested Loops,Hash Join和Sort Merge Join.下面来介绍三种不同连接的不同:一.NESTED LOOP:对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择。在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大(大于1万不适合),要把返回子集较小表的作为外表( 阅读全文
posted @ 2013-10-03 09:59 胡.杰 阅读(411) 评论(0) 推荐(0) 编辑
摘要:Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式。因为Hint的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是Oracle提供给DBA用来分析问题的工具 。在SQL代码中使用Hint,可能导致非常严重的后果,因为数据库的数据是变化的,在某一时刻使用这个执行计划是最优的,在另一个时刻,却可能很差,这也是CBO 取代RBO的原因之一,规则是死的,而数据是时刻变化的,为了获得最正确的执行计划,只有知道表中数据的实际情况,通过计算各种执行计划的成本,则其最优,才是最科学的,这也是CBO的工作机制。 在SQL代码中加入Hi 阅读全文
posted @ 2013-10-02 22:49 胡.杰 阅读(241) 评论(0) 推荐(0) 编辑
摘要:转载:CBO基于成本的优化器----------------------------------2013/10/02CBO基于成本的优化器:让oracle获取所有执行计划的相关信息,通过对这些信息做计算分析,最后得出一个代价最小的执行计划作为最终执行计划。还是前面的例子,让我们再来看看CBO的表现:SQL> select /*+ all_rows */ * from t where id = 1;已选择50600行。执行计划----------------------------------------------------------Plan hash value: 16011968 阅读全文
posted @ 2013-10-02 21:55 胡.杰 阅读(338) 评论(0) 推荐(0) 编辑
摘要:引言:大家都知道“效率”是数据库中非常重要的一个指标,如何提高效率大家可能都会想起索引,但索引又这么多种,什么场合应该使用什么索引呢?哪种索引可以提高我们的效率,哪种索引可以让我们的效率大大降低(有时还不如全表扫描性能好)下面要讲的“索引”如何成为我们的利器而不是灾难!多说一点,由于不同索引的存储结构不同,所以应用在不同组织结构的数据上,本篇文章重点就是:理解不同的技术都适合在什么地方应用!B-Tree索引场合:非常适合数据重复度低的字段 例如 身份证号码手机号码QQ号等字段,常用于主键 唯一约束,一般在在线交易的项目中用到的多些。原理:一个键值对应一行(rowid)格式: 【索引头|键值|r 阅读全文
posted @ 2013-10-02 17:41 胡.杰 阅读(1080) 评论(0) 推荐(0) 编辑
摘要:关于Oracle中的外键,首先要说明一下。1. 除非已定义了父表主键或唯一键约束,否则oracle将不允许创建子表的外键约束。2. 在定义外键约束时,oracle不会自动创建索引,所以必须手动在与外键约束相关的列上创建索引。所以我们这里要研究的是否需要在子表中创建索引,因为父表中对应的列是一定有索引的。如果子表中的外键不创建索引,将导致两个问题。1. 影响性能。 如果子表外键没有创建索引,那么当父表查询关联子表时,子表将进行全表扫描。2. 影响并发。 如果子表外键没有创建索引,那么在子表进行DML操作时,将会锁住整个父表。所以,我们应该尽量考虑在外键上面创建索引。 阅读全文
posted @ 2013-09-15 23:04 胡.杰 阅读(2489) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示