引起数据库性能问题的因素
软件设计对数据库的影响
软件架构设计对数据库性能的影响
软件代码的编写对数据库性能的影响
数据库的设计
OLTP:在线事务处理系统,用户并发数多。例如售票系统。
OLAP:在线分析系统。例如报表系统。
DSS:决策支持系统
数据库的硬件设计
存储容量:这里介绍了如何估算表所占空间的大小。
存储的物理设计:SAN存储结构
数据的安全:Data Guard结构、RAC结构、Rman+归档。
锁和阻塞
外键的创建,会影响性能。当你需要修改或者删除主表数据时,总是会锁定扫描从表,保证数据的完整性。
Latch和等待
Latch,类似于锁一样的资源,是为了保护内存结构而发明的一种资源。它是一种轻量级的锁,不会造成阻塞,只会导致等待。
阻塞,是一种系统设计上的问题,等待,是一种系统资源争用的问题。
共享池中的Latch争用
数据缓存池Latch争用
访问频率非常高的数据块被称为热快。
优化器
RBO:基于规则的优化器,从oracle10g开始,被弃用。
CBO:基于代价的优化器,有两种模式可以选择,FIRST_ROWS(n)优先考虑将结果集中的前n条记录以最快的速度反馈回来;ALL_ROWS,全表扫描。
执行计划
Cardinality(基数)/Rows:
SQL的执行计划
Hint
分析及动态采样
直方图:数据在列上的分布情况
DBMS_STATS包:性能输的收集、设置、删除、备份和恢复。
动态采样:
并行执行
变量绑定
SQL执行顺序:先判断是否有相同hash值存在的sql,如果没有,那么进行语法分析、语义分析、生成执行计划、执行sql。
SQL_TRACE和10046事件
10053事件
性能视图和性能参数
性能报告
----摘自《让Oracle跑得更快:Oracle10g性能分析与优化思路》