Performance Tuning
文章平均质量分 67
flighting_sky
这个作者很懒,什么都没留下…
展开
-
聚簇因子
1、聚簇因子(clustering_factor):是使用B树索引进行区间扫描的成本很重要因素,反映数据在表中分布的随机程度。聚簇因子越高,则数据在表中的分布随机程度越高,也就是越能说明索引条目指向随机的表数据块,进行索引范围查询的时候就会产生越高的I/O量。反之,聚簇因子越接近表数据块的数量。透过聚簇因子,可以看出:是否数据库应该使用Index range scan;表数据跟索引原创 2013-04-25 00:49:09 · 844 阅读 · 0 评论 -
逻辑读与物理读
通常,当执行了set autotrace traceonly statistics,然后执行sql语句,就会返回下面的统计数据:recursive calls:递归调用。一般原因:dictionary cache未命中;动态存储扩展;PL/SQL语句db block gets:从buffer中读取的数据块数量。也就是即时读,通常是执行DML操作的时候,需要对数据块添加行锁,以免其他会话对同原创 2013-07-24 16:57:16 · 750 阅读 · 0 评论 -
Oracle 10053事件内部原理与测试【2】
文章转载自:http://www.itpub.net/thread-1766506-1-1.html3.通过10053事件分析一个SQL执行计划的产生过程,需要贴出trace中的相关信息和必要的文字说明。测试LEO1@LEO1> drop table leo3 purge; 清理环境Table dropped.LEO1转载 2013-07-25 00:20:42 · 733 阅读 · 0 评论 -
Oracle 10053事件内部原理与测试【1】
转载自:http://www.itpub.net/thread-1766504-1-1.html本次我们主要讲解oracle 10053事件和实验,好多朋友可能对这个事件不是很熟悉,因为在日常运维中用到的不是很多。Oracle 10046和10053 都是非官方trace sql的方法,在官方文档上是找不到相关资料的,但在MOS上可以找到。sql_trace是官方推荐的trac转载 2013-07-25 00:17:28 · 666 阅读 · 0 评论 -
【性能视图】V$SEGMENT_STATISTICS的使用
通过V$SEGMENT_STATISTICS可以了解表空间内某个对象,如表、索引,从数据库启动后,统计事件发生的次数,也就是VALUE值。其中,统计事件有:space used -----------空间使用space allocated -----------空间分配segment scans ---------原创 2012-12-26 22:38:27 · 2099 阅读 · 1 评论 -
高水位线对于全表扫描的影响
简单来说,全表扫描就是扫描表中的所有数据块,包括空数据块。在ASMM的环境下,全表扫描通常是扫描到低高水位线(Low HWM),然后通过位图扫描低高水位线到高水位线之间格式化的数据块。在ASMM环境下,当空间不足的时候,oracle就会分配新的区间给表,然后HWM随即就会提高,但是数据库并没有马上格式化这些新分配的数据块,而是等到需要使用这些数据块的时候才格式化这些数据块。为此,low HWM到H原创 2013-08-03 21:02:08 · 777 阅读 · 0 评论 -
SQL语句优化
(1) 选择最有效率的表名顺序 ( 只在基于规则的优化器中有效 ) :ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名, FROM 子句中写在最后的表 ( 基础表 driving table) 将被最先处理,在 FROM 子句中包含多个表的情况下 , 你必须选择记录条数最少的表作为基础表。如果有 3 个以上的表连接查询 , 那就需要选择交叉表 (inter转载 2013-08-26 22:57:49 · 624 阅读 · 0 评论 -
Oracle Hints详解
本文转载自:在向大家详细介绍Oracle Hints之前,首先让大家了解下Oracle Hints是什么,然后全面介绍Oracle Hints,希望对大家有用。基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比。此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取转载 2013-08-27 23:51:20 · 941 阅读 · 0 评论 -
使用 Tkprof 分析 ORACLE 跟踪文件
本文转载自:http://blog.csdn.net/tianlesoftware/article/details/5632003Tkprof是一个用于分析Oracle跟踪文件并且产生一个更加清晰合理的输出结果的可执行工具。如果一个系统的执行效率比较低,一个比较好的方法是通过跟踪用户的会话并且使用Tkprof工具使用排序功能格式化输出,从而找出有问题的SQL语句。一. TKPR转载 2013-08-27 23:03:18 · 620 阅读 · 0 评论 -
【性能优化案例】执行计划宁可走全表扫描,也不走索引
准备信息:表:TABLE1,有一列为SEQ_ORD。索引:在SEQ_ORD列上有一个NORMAL索引NONUNI_INDEX【nonunique】 问题:测试语句:SELECT SUM(SEQ_ORD) FROM TABLE1 WHERE SEQ_ORD>100;第一次运行的时候,发现执行计划走的是全表扫描,并没有走索引。执行计划如下图: 于是,我原创 2013-07-24 16:22:00 · 1821 阅读 · 0 评论 -
收集对象统计信息【表、列、索引】
一、建表CREATE TABLE TABLE1( DATE_ORD DATE NOT NULL, SEQ_ORD NUMBER(6) NOT NULL, SMALL_VC VARCHAR2(5))PCTFREE 90PCTUSED 10;二、创建索引create index nonuni_index tablespace users;三、收集并查看表的统计信息分原创 2013-07-23 20:52:30 · 781 阅读 · 0 评论 -
优化器
优化器(Optimizer)一、Query Transformer(语句转换)详细见博文:二、Estimator(评估)评估衡量类型:谓语的选择,基数,成本(I/O、CPU和内存)评估所需要的统计数据有:1.表统计信息:行数,数据块数,行的平均长度;2.列统计信息:列值的基数,NULL值的数量,数据的分布;3.索引统计信息:leaf block 的数量,原创 2013-04-30 23:20:58 · 662 阅读 · 0 评论 -
执行计划---索引扫描
索引扫描索引唯一扫描【Index unique scan】:原理:从根节点到叶节点遍历整个树,直到查找到指定的条目,获取ROWID,然后根据ROWID查找到对应的数据行。使用条件:WHERE条件中的列对应的是主键索引或唯一索引,而且该扫描方法只是用于单值扫描,也就是谓语为“=”。hint:/*INDEX(table_alias index_name)*/索引范围扫描【Index原创 2013-04-24 23:31:32 · 696 阅读 · 0 评论 -
聚簇表
第一部分聚簇表,简单来说就是利用选取一个或多个列作为cluster key,具有相同cluster key的一个或多个表的数据行会被保留在同一个数据块中。适用条件:对于经常需要进行连接操作而又不会经常被更新的几个表,可以考虑建立对这几个表建立聚簇表。不太适合的条件:1、经常被更新的表。跟堆表相比,聚簇表的插入操作的时候,在插入前需要查找cluster key以定位插入的位置;对于更原创 2013-04-27 18:17:32 · 1986 阅读 · 0 评论 -
物化视图
物化视图,可以理解为保存master table 在过去某个时间点状态下所有数据的一个视图。其利用materialized view log或direct loader log(记录了物化视图自上次更新后的所有master table的更新记录)来reflash物化视图,也叫fast reflash.或者进行一次complete reflash,对物化视图进行重建。注意:每个materrial原创 2013-04-27 18:20:24 · 600 阅读 · 0 评论 -
分区
一、分区的特征1、partition key分区键,是指用来设置分区的一个或多个列。2、partition strategies分区策略,是指控制数据库如何把数据放进分区里面。2.1、Range Partitioning:顾名思义,根据分区键的范围确定数据行在哪一个分区里。如:CREATE TABLE time_range_sales( prod_id NUMBER(6原创 2013-04-29 23:45:53 · 679 阅读 · 0 评论 -
索引组织表
索引组织表(index-organized index)由上图可以看出索引组织表的一个明显特点就是,B-tree结构但leaf block存放的是数据行,没有physical rowid的出现。1、对于索引组织表和堆表的区别,下面截取了ORACLE技术文档内容来说明:2、溢出区(Overflow Area)索引组织表的一个缺点就是比较容易导致块的分割和存储密原创 2013-04-29 23:39:06 · 2592 阅读 · 0 评论 -
位图索引
位图索引1、位图索引采用了类似于B-tree的结构,只是在leaf block中所存储的内容为:index key+start ROWID+end ROWID+范围内的位图,如下:Shipping Clerk,AAAPzRAAFAAAABSABQ,AAAPzRAAFAAAABSABZ,0010000100Shipping Clerk,AAAPzRAAFAAAABSABa,AAAPzRA原创 2013-04-29 23:42:00 · 708 阅读 · 0 评论 -
索引的种类
一、索引的特征1、usability【可用性】如果该索引为unusable,则优化器会忽略该索引,允许bulk load操作,不允许DML操作,同时ORACLE数据库会删除该索引所拥有的段。若要其可用,只需要rebuilt即可;2、visibility【有效性】如果该索引为invisible,则优化器会忽略该索引,允许DML操作。该设置主要用于索引删除前的测试或在不影响其他应用的前原创 2013-04-29 23:51:28 · 891 阅读 · 0 评论 -
SQL processing
SQL语句的处理(SQL processing)一、SQL语句的解析当应用程序向服务器发送SQL语句的时候,也就是parse call,服务器会在PGA中打开一个cursor(该cursor会有一个handle指向SGA中的private SQL area)来保存该SQL语句.1、syntax check(语法检查):检查SQL语句的语法是否完整;2、semantic原创 2013-04-30 23:21:46 · 884 阅读 · 0 评论 -
Oracle 11g 新特性 -- SQL Plan Management 说明
文章转载自:http://blog.csdn.net/tianlesoftware/article/details/8292410 一.概述SQL 语句的SQL 执行计划发生更改时,可能存在性能风险。SQL 计划发生更改的原因有很多,如优化程序版本、优化程序统计信息、优化程序参数、方案定义、系统设计和SQL 概要文件创建等。在以前版本的Oracle DB 中引入了各种计转载 2013-09-21 23:23:47 · 935 阅读 · 0 评论