【Oracle SQL性能优化技巧大总结】教程文章相关的互联网学习教程文章

[Oracle] - 性能优化工具(4) - AWRDD

AWRDD是用于比较两个AWR快照,从而获得不同时期的性能。执行如下语句获得AWRDD:@?/rdbms/admin/awrddrpt.sql2025 23 2月 2014 07:12 1 2026 23 2月 2014 08:00 1 2027 23 2月 2014 09:00 1 2028 23 2月 2014 10:00 1 2029 23 2月 2014 11:00 1 2030 23 2月 2014 11:24 1 2031 23 2月 2014 11:26 1 2032 23 2月 2014 11:31 1 2033 23 2月 2014 11:31 1 2034 23 2月 2014 11:41 ...

oracle 性能优化建议

原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 尤其是“主键ID=?”这样的条件。 原则二: SELECT子句中避免使用 ‘ * ‘: ORACLE在解析的过程中, 会将‘*‘ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 。 简单地讲,语句执行的时间越短...

Oracle查询性能优化【代码】

原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 尤其是“主键ID=?”这样的条件。 原则二: SELECT子句中避免使用 ‘ * ‘: ORACLE在解析的过程中, 会将‘*‘ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 。 简单地讲,语句执行的时间越短越...

Oracle查询性能优化【代码】

本人在学习Oracle的过程中自己的感悟和网上其他大神的心得,有什么不对的地方希望大家指正!原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 尤其是“主键ID=?”这样的条件。 原则二: SELECT子句中避免使用 ‘ * ‘: ORACLE在解析的过程中, 会将‘*‘ 依次转换成所有的列名, 这个工...

Oracle数据库的sql语句性能优化【代码】

在应用系统开发初期,由于开发数据库数据比较少,对于查询sql语句,复杂试图的编写等体会不出sql语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要问题之一。系统优化中一个很重要的方面就是sql语句的优化。对于海量数据,劣质sql语句和优质sql语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就行,而是要写出高质量的...

Oracle SQL性能优化(转)

(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACLE采...

[Oracle] - 性能优化工具(1) - AWR

AWR快照默认情况下,Oracle每隔一小时会自动产生一个快照,保存最近8天的快照。我们可以通过如下语句获得产生快照的时间间隔和保存的天数:SYS@orcl(lx15)> select SNAP_INTERVAL,RETENTION from dba_hist_wr_control;SNAP_INTERVAL RETENTION --------------------------------------------------------------------------- ------------------------------------...

Oracle性能优化之库缓存与Pin【图】

Oracle性能优化 之 库缓存与Pin,Oracle为每个游标还要额外分配250字节的内存用于存储一些管理性信息。第二个子查询就是计算当前 一、使用视图进行库缓存大小测试: 如果你的企业新开启了一项业务,并为此开发了一套新的应用程序,这需要一个新的数据库为后台。你负责规化此新的数据库。那么,你该如何确定共享池的大小呢?下面的测试可以有助于你确定共享池大小。注意,这样确定的共享池大小,只是估计的大小。到底多大的共享池才...

Oracle性能优化之库缓存【图】

Oracle性能优化 之 库缓存,执行计划的生成要耗费许多CPU时间,而且优化器会将生成的执行计划存放到共享池中。如果你执行很多相同 一、库缓存中的信息 1.什么是执行计划 2.为什么要共享执行计划 执行计划的生成要耗费许多CPU时间,而且优化器会将生成的执行计划存放到共享池中。如果你执行很多相同的语句,但没有共享执行计划,优化器每次都要搜索共享池、查找有没有可以共享的执行计划,没有查找后它自己生成,再把生成的执行计...

ORACLESQL性能优化系列(一)_PHP教程

1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object stat...

oracle基础~linux整体性能优化

包括三方面 1 sysctl.conf //扩大文件句柄数 fs.aio-max-nr = 1048576 fs.file-max = 6815744 // 扩大共享内存段 影响SGA kernel.shmmax = 4294967295 共享内存段的最大字节尺寸(以字节为单位)推荐设置成内存的80% kernel.shmall = 2097152 全部允许使用的共享内存页大小(页为单位) kernel.shmmni = 4096 每个oracle占用一个共享段,这是最大的共享段数量 不需要调整 kernel.sem = 250 32000 100 128 // 扩大端口范围 默认的范围太...

oracle 性能优化建议小结

代码如下: 低效:SELECT … FROM DEPT WHERE SAL * 12 > 25000; 高效:SELECT … FROM DEPT WHERE SAL > 25000/12;3、避免在索引列上使用IS NULL和IS NOT NULL 避免在索引中使用任何可以为空的列,ORACLE性能上将无法使用该索引.对于单列索引,如果列包含空值,索引中将不存在此记录. 对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果至少有一个列不为空,则记录存在于索引中.举例: 如果唯一性索引建立...

Oracle 学习之性能优化(一)SQL语句处理【代码】【图】

当向Oracle提交一个sql命令时,Oracle到底做了哪些事情?对这个问题有很好的理解,能帮助你更好的分析sql语句的优化。 执行一条sql语句从开始到结束,需要经历4个步骤:分析--对提交的语句进行语法分析、语义分析和共享池检查。优化--生成一个可在数据库中用来执行语句的最佳计划行资源生成--为会话取得最佳计划并建立执行计划语句执行--完成实际执行查询的行资源生成步骤的输出。对应DDL来说,这一步就是语句的结 束。对应SELE...

Oracle 学习之性能优化(三)绑定变量【代码】

根据Oracle 学习之性能优化(二)游标中的描述,我们知道如下两条语句是不共享的。select * from emp where empno=7698; select * from emp where empno=7566; 这样就造成每次执行用户的查询都要进行硬解析,但是我们知道,其他这两个语句的执行计划应该是相同。那么有什么方法能避免不必要的硬解析吗?这里我们提供2种方法。一、绑定变量SQL> variable empno number; SQL> exec :empno := 7839;PL/SQL procedure successfully co...

Oracle 学习之性能优化(四)收集统计信息【代码】

使用analyze命令可以收集统计信息,如:收集或删除对象的统计信息验证对象的结构确定table 或cluster的migrated 和chained rows。示例:SQL> create user anal identified by anal ;User created.SQL> grant resource,connect to anal;Grant succeeded.SQL> grant select any dictionary to anal;Grant succeeded.SQL> conn anal/anal Connected. SQL> create table t1 as select * from dba_objects; SQL> create table t2 as sel...