Oracle DBA做SQL优化的最佳思路

原创 2013年12月04日 11:00:54
如何在 Oracle数据库里写出高质量的SQL语句,如何在Oracle数据库里对有性能问题的SQL做诊断和调整,这是DBA们在ORACLE数据库实践中不可避免的难题。下面就让我们来分析一下拿到一条问题sql后我们可以如何去开始我们的优化思路。


对于有问题的SQL做SQL优化的具体步骤一般为:
1、查看该SQL语句的执行计划,并结合其资源消耗情况和相关统计信息、Trace文件来分析其执行计划是否合理;
2、通过修正措施(如调整该SQL的执行计划等)来对该SQL做调整以缩短其执行时间,Oracle数据库里SQL优化的终极目标就是要缩短目标SQL语句的执行时间。要达到上述目的,我们通常只有如下三种方法可以选择:
1、降低目标SQL语句的资源消耗;
2、并行执行目标SQL语句;
3、平衡系统的资源消耗。


方法1:降低目标SQL语句的资源消耗”以缩短执行时间,这是最常用的SQL优化方法。这种方法的核心是要么通过在不更改业务逻辑的情况下改写SQL来降低目标SQL语句的资源消耗,要么不改SQL但通过调整执行计划或相关表的数据来降低目标SQL语句的资源消耗。
方法2:并行执行目标SQL语句”,这实际上是以额外的资源消耗来换取执行时间的缩短,很多情况下使用并行是针对某些SQL的唯一优化手段。
方法3:平衡系统的资源消耗” 可以避免不必要的资源争用所导致的目标SQL语句执行时间的增长。对某些SQL而言,其执行时间的增长或者不稳定(时快时慢)不是由于其执行计划的问题,而是由于在目标SQL执行时系统处于高负荷状态,执行目标SQL所需要的硬件资源(CPU、内存、IO等)得不到保障,存在争用的情况。在这样的情况下,如果我们能平衡系统的资源消耗,把一些跟目标SQL同时执行的不重要但很消耗系统资源的操作(如报表、批处理等)挪到系统不忙的时候执行,比如把它们挪到晚上执行,那么就可以释放部分系统硬件资源以确保目标SQL执行时所需要的硬件资源不再存在争用的情况,进而就避免了其执行时间的增长或者不稳定。

高级SQL优化(二) ——《12年资深DBA教你Oracle开发与优化——性能优化部分》

充分利用索引 索引的限制 1. 索引对不等号和NOT的限制   如果WHERE条件中出现!=或者 Oracle 10g起,在基于CBO的优化器模式下Oralce会进行自动优...
  • holandstone
  • holandstone
  • 2016年05月21日 23:36
  • 1755

SQL优化的思路及基本原则(mysql)

SQL优化的思路:  1.优化更需要优化的sql;  2.定位优化对象的性能瓶颈:优化前需了解查询的瓶颈是IO还是CPU,可通过PROFILING很容易定位查询的瓶颈。  3.明确优...
  • sundenskyqq
  • sundenskyqq
  • 2015年09月28日 20:25
  • 2268

《Oracle DBA 高可用、备份恢复与性能优化》目录

http://product.dangdang.com/23780007.html 目录 第1章  RAC真应用集群 1.1  单实例数据库并发控制原理 1.1.1  并发访问的数据不...
  • brucexia
  • brucexia
  • 2015年11月05日 17:37
  • 1240

高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》

目录: Oracle数据完整性和锁机制  索引及优化之表分析  表分析、约束及表间关系  Oracle体系结构1 Oracle体系结构2  海量数据库及分区1  海量数据库及分区2  ...
  • jdnha
  • jdnha
  • 2012年12月11日 12:43
  • 663

一次ORA-4030问题诊断及解决【解决思路不错,说明了对象的统计信息与优化器的优化操作(即选择执行一个SQL语句在该优化参数环境下最佳的执行计划)间的关系】

在报表数据库的后台alert文件中发现了这个错误,简单记录一下问题的诊断和解决过程。数据库版本9204 for Solaris sparc64。   错误信息如下:   Errors in file ...
  • haiross
  • haiross
  • 2014年02月12日 09:13
  • 1438

dba-oracle-sql优化.

  • 2011年07月05日 14:46
  • 72KB
  • 下载

Oracle Database 10g:为 DBA 提供的最佳前 20 位的特性 - 6.自动工作负载信息库

第 6 周 自动工作负载信息库   学习使用新的特性,这些特性采集数据库性能统计数据和量度,以供分析和调整,并显示在数据库中花费的准确时间,甚至保存会话信息 当您有数据库性能问题时,要解决它您首先要...
  • libing13810124573
  • libing13810124573
  • 2014年03月22日 00:46
  • 803

Oracle Database 10g:为 DBA 提供的最佳前 20 位的特性 - 1.闪回版本查询

第 1 周 得到电影而不是图片:闪回版本查询   不需要设置,立即识别对行的所有更改 在 Oracle9i Database 中,我们看到它推出了以闪回查询形式表示的“时间机器”。该特性允许 DBA...
  • libing13810124573
  • libing13810124573
  • 2014年03月22日 00:47
  • 466

MySQL DBA SQL开发最佳实践

  • 2017年07月28日 16:44
  • 1.24MB
  • 下载

MySQL DBA SQL编程最佳实践

  • 2016年12月08日 14:30
  • 46.73MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle DBA做SQL优化的最佳思路
举报原因:
原因补充:

(最多只允许输入30个字)