不是所有的数据库都需要(能够)优化
数据库库的性能,大多数都不是从数据库层面能够解决的
在不了解业务之前,不可能找到正确的优化思路
优化要有一个度,要适可而止
先尽可能从小范围分析问题
- 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调优的合理步骤:
调整索引、创建分区、反规范化
找出 Top SQL 优化 单条SQL,并行SQL,PL/SQL代码
在Oracle中,因为并发,存在资源争用。
表内记录的争用(通常表现为锁Enqueue等待);
共享内存区域的争用(表现为闩锁Latch等待,内存缓冲区等诸多等待)
确保Oracle能从操作系统得到足够内存
确保内存在SGA和PGA的合理分配。在Oracle11g中,启用自动内存管理(Automatic Memory Management)
在特定的内存区域中对段的分配作出微调
对控制排序和连接的参数作出微调
监控Oracle内存分配
确定IO子系统有足够的带宽来处理物理IO请求。主要影响因素是磁盘的数量,而非磁盘的存储空间。不同的磁盘性能差异较大,但每秒基本上能处理100次随机IO
?
?
链接1: Oracle 性能优化的基本方法概述
?
?
原文:http://www.cnblogs.com/chgxtony/p/4887698.html