一、何时考虑性能的问题。 考虑性能的问题应该贯穿于整个系统建设的各个阶段中:系统设计、数据库设计、代码开发、系统运
一、何时考虑性能的问题。
考虑性能的问题应该贯穿于整个系统建设的各个阶段中:系统设计、数据库设计、代码开发、系统运维。
1.系统设计阶段:
系统架构方面:二层、三层、多层
系统类型:olap——生成报表等,主要考虑海量数据的处理速度
相关阅读:oracle根据外键名查关联的表
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报告