一、何时考虑性能的问题。
考虑性能的问题应该贯穿于整个系统建设的各个阶段中:系统设计、数据库设计、代码开发、系统运维。
1.系统设计阶段:
系统架构方面:二层、三层、多层
系统类型:OLAP——生成报表等,主要考虑海量数据的处理速度
OLTP——主要考虑内存(cache)、并发、并行等
系统生命周期中系统能力的估算:并发数、查询的响应时间等。负面例子:2008北京奥运会订票系统崩溃。
2.数据库设计阶段,着重考虑数据库对象的类型和属性:
分区。
索引及其类型(OLTP,一般用B-Tree;OLAP,一般考虑用Bitmap或Text索引)。
并行。
其它的一些对象属性(ASSM、并发属性)。
内存相关参数。
并发相关参数。
I/O相关参数。
数据库架构(单节点、RAC、分布式)。
硬件性能(CPU、内存等)。
3.高效的SQL与变量绑定(OLTP)
误区:不恰当的使用Hint:强制使用索引、强制设定驱动表、强制优化器模式
4.对象类型:属性、参数的修改
二、DBA应该参与到系统建设的各个阶段中,开发人员应尽可能地考虑性能问题。
三、优化的内容:
1.参数:OLTP:内存:SGA、PGA
并行:PROCESSES、SESSIONS
2.对象属性:分区、并行
3.索引类型:B-Tree、Bitmap、Text
4.高效的SQL
5.SQL执行计划
6.对表进行分析:直方图,DBMS_STATS包
四、优化工具
1.SQL_Trace
2.10046事件
3.性能视图,如:V$SQL、V$SESSION、V$LOCK、V$SESSION_LONGOPS
4.10053事件,将显示Oracle执行计划中的所有详细操作
5.优化工具:Hint—— 优化器模式
访问路径
表连接顺序
并发方式
Statspack(AWR)报告、ASH报告