18 Jun 2013
SQL的共享性:在oracle中,每一个语句第一次执行的时候都需要进行一次hard parse(load into shared pool, check, generate plan)。执行后的执行计划会缓存到shared pool中。如果shared pool很小或者语句的共享性不好(即,没有使用bind variable.),则shared pool中的信息更换变得频繁,性能下降。使用绑定变量可以提高语句共享性,继而提升性能。在shared pool有cache的语句,则只执行soft parse,即没有load into shared pool的步骤。
参数cursor_sharing可影响共享性:CURSOR_SHARING = { SIMILAR | EXACT | FORCE }。 在oracle 11g中已经不推荐使用similar。可以设置成force让没有使用绑定变量的相似语句共享cursor,即减少hard parse. |
在AWR中可以看到hard parse和soft parse的使用情况。
网络传输是双向的。在测试网络性能时,需要进行双向测试。
性能问题的诊断是涉及硬件、网络、系统软件、数据库、应用软件各个层面的问题、正确的方法论应该是:首先,要有站在总体高度的全局观。其次,应该采取自底向上的策略,先仔细检查硬件、网络层面相对简单的问题,再深入到系统软件和应用软件相对复杂的领域。
使用PL/SQL可以减少数据的网络传输。
不同阶段进行的优化:
* 设计阶段包括的与优化相关的工作:业务规则的优化设计;数据库体系结构的优化设计;数据库逻辑结构设计;数据库物理结构设计;应用系统的设计等。* 开发阶段与优化相关的工作:合理的索引策略;合理的访问路径;优化SQL语句的分析数;充分使用PL/SQL;减少锁冲突等。
* 产品阶段能进行的优化工作主要与数据库系统和操作系统平台相关:内存和CPU的优化和调整;磁盘I/O和物理结构的设计和调整;系统资源竞争的检测和调整;操作系统平台的优化等。
针对已上线系统进行分析
1. 检查系统的利用率
2. 检查等待事件
3. 检查物理I/O
4. 确定范围-系统级,模块级,用户级?
5. 确定最消耗资源的SQL:AWR报告,Top Sessions in OEM
6. 分析执行计划
7. 分析访问的对象(size/cardinality)
8. 分析连接、访问方式
9. 找出相关问题
10. 确定解决方案
11. 测试解决方案
12. 生产环境实施解决方案
13. 分析结果
当使用set autotrace on
得到的statistics: xxxxx consistent gets
. 可以使用它计算语句消耗的内存: xxx x 8192 = ???GB
。 8192为block的大小.
Pending to learn: AWR的解读 等待事件的查看与分析