Oracle Tuning思路

性能优化之写在前面

  • 不是所有的数据库都需要(能够)优化

  • 数据库库的性能,大多数都不是从数据库层面能够解决的

  • 在不了解业务之前,不可能找到正确的优化思路

  • 优化要有一个度,要适可而止

性能优化的原则

先尽可能从小范围分析问题

  • SQL层
    • 如果能定位到SQL,就不要从会话层面分析
      • 工具:执行计划,10053,10046
  • 会话层
    • 如果能定位到会话层,就不要从系统层面分析
      • 工具:V$SESSION,V$SESSTAT,V$SESSION_WAIT,V$SQL,V$LOCK,SQL_TRAC
  • 系统层
    • 如果无法定位任何性能问题,那么就得从系统层面入手
      • 工具:AWR(Statspack), OS Tuning Tools (IOSTAT,VMSTAT,TOP)

Oracle调优的合理步骤:

  1. 通过调整SQL、PL/SQL以及优化物理设计(分区、索引等)尽可能减少应用的请求
    • 调整索引、创建分区、反规范化

    • 找出 Top SQL 优化 单条SQL,并行SQL,PL/SQL代码

  2. 通过减少对锁、Latch、缓存以及Oracle代码层级中其他资源的争用来获得最好的并发能力。
    • 在Oracle中,因为并发,存在资源争用。

      • 表内记录的争用(通常表现为锁Enqueue等待);

      • 共享内存区域的争用(表现为闩锁Latch等待,内存缓冲区等诸多等待)

  3. 在前两步规范化逻辑IO需求的基础上,通过优化Oracle内存来最小化物理IO的需求
    • 确保Oracle能从操作系统得到足够内存

    • 确保内存在SGA和PGA的合理分配。在Oracle11g中,启用自动内存管理(Automatic Memory Management)

    • 在特定的内存区域中对段的分配作出微调

    • 对控制排序和连接的参数作出微调

    • 监控Oracle内存分配

  4. 如果到现在为止还无法满足物理IO的需求,就得通过提供足够的IO带宽并均匀分布系统负载来配置IO子系统以满足物理IO需求
    • 确定IO子系统有足够的带宽来处理物理IO请求。主要影响因素是磁盘的数量,而非磁盘的存储空间。不同的磁盘性能差异较大,但每秒基本上能处理100次随机IO

    • 在配置的所有磁盘上均匀的分布负载。RAID0(条带化)是最好的方式

       


 

 Oracle调优的具体技术手段:

链接1: Oracle 性能优化的基本方法概述

 

posted @ 2015-10-17 16:26  chgxtony  阅读(167)  评论(0编辑  收藏  举报