原地址: http://docs.oracle.com/cd/E11882_01/server.112/e41573/perf_overview.htm#g1009625
本章介绍性能调优简介包含以下部分:
性能调优简介
性能调优特征和工具简介
1.1性能调优简介
本指南提供调整oracle数据库性能的信息。本指南讨论的重点包含:
* 执行计划
* Instance调优
* SQL 调优
1.1.1 执行计划
在进行本章其他章节前,需要完成Part2“执行计划”。根据几十年的设计和性能经验,Oracle已经设计了一套性能的方法。这部分的描述可以极大地改善系统性能,包含以下主题:
* 理解投入选择
* 理解可扩展性
* 系统架构
* 应用设计准则
* 负载测试,建模,实现
* 部署新的应用
1.1.2 Instance 调试
第三章“优化实例性能”讨论的主要因素包括,调试和优化数据库实例。
当考虑实例调试,仔细考虑数据库的最初设计,避免瓶颈可能导致性能问题。
另外,你必须考虑:
l 给数据库结构分配内存
l 决定数据库不同路径的I/O需求
l 调试操作系统为了数据库的最佳性能
在数据库实例被安装和配置后,当它运行时,你必须监控数据库,检查性能相关的问题。
1.1.2.1 性能原则
尽管相关联,性能调试需要不同的方法去初始化配置系统。配置系统包含以有序的方式分配资源,这样初始的系统配置有功能的。
调试是由最重要的瓶颈驱动的,用最合适的更改减少或者消除瓶颈的影响。通常,无论系统上线前或上线后,都是被动的调优。
1.1.2.2 基线
最有效的方法是建立性能基线,如果有性能问题出现,可以进行对比。大多数DBA可以知道他们系统很好,并且轻易识别使用的高峰时期。例如,高峰时期可以在早10点到12点,也可以在1:30到3:00.这可能包括一个12:00到18:00的批处理窗口。
重要的是在现场识别这些高峰时期,并安装监控工具,收集这些高负载的性能数据。最优情况是,应用程序在QA周期的最初测试阶段配置数据收集,否则,应当在系统上线时配置数据收集。
理想情况下,基线数据收集应该包括以下:
* 应用统计信息(事物量,响应时间)
* 数据库统计信息
* 操作系统统计信息
* 磁盘I/O统计信息
* 网络统计信息
在AWR中,基线被一系列的快照识别,以提供未来的比较。
1.1.2.3 症状和问题
性能调优常见的陷阱是真正的问题展现出错误的症状。非常重要,认识到许多性能统计信息暗示症状,没有足够的数据识别症状,实施补救措施。例如:
* 物理I/O 变慢
通常,这是由于不好的磁盘配置,但是,也肯能是因为差的SQL调用,导致大量的磁盘物理I/O
* 锁争用
锁争用很少调试实例配置,而是通过应用的更改来解决问题。
* 过度CPU使用
过度的CPU使用意味着系统上只有很少的空闲CPU。这可能是由于系统的不足,未调试的SQL语句,或者效率低的应用程序导致。
1.1.2.4 何时去调试
两种不同类型的调优:
* 主动的监控
* 消除瓶颈
1.1.2.4.1 主动的监控
主动监控常常发生在定期的间隔内,一些性能统计数据分析后,标识系统行为和资源使用是否发生改变。主动的监控也可以视为积极的调优。
通常,监控不会导致系统配置的改变,除非,监控过程中发现了一个严重的问题。在一些情况下,经验丰富的工程师可以只通过统计信息发现潜在的问题,尽管伴随性能下降。
当监控性能没有明显的下降时,试验或调整系统是一个危险的动作,导致不必要的性能下降。调试一个系统应该考虑被动调试,而且要遵循被动调试的步骤。监控通常是大量计划测试的一部分,当应用使用这种方式时,观察资源消耗的改变,和应用使用数据库和主机资源的变换。
1.1.2.4.2 消除瓶颈
调试通常意味着修复性能问题。但是,调试应当是应用生命周期的一部分,贯穿分析,设计,编码,生产,维护阶段。通常,调试阶段持续到数据库上了生产之后。在这个阶段,调试变为被动过程,哪里出现最严重的性能问题,哪里去修复。
通常,调试的目标是降低资源消耗或者减少完成一个操作的解析时间。无论哪种方式,目的都是提升使用特定资源的效率。一般来说,性能问题都是因为对特定资源的过度使用。在系统中过度使用资源是一种瓶颈。有几个不同的阶段识别瓶颈和潜在修复。这在以后章节讨论。
记住不同形式的争用产生的症状,可以使用以下不同的更改来修复:
* 改变应用,或者应用使用的方式
* 改变Oracle
* 改变主机的配置
通常,最有效的解决瓶颈的方式时改变应用。
1.1.3 SQL调试
Part IV, "Optimizing SQL Statements"本章讨论调试和优化SQL语句
许多应用程序员认为SQL是一种传递语音,因为发出查询返回数据,但是,客户端工具常常产生低效率的SQL语句。因此,了解SQL产生过程有利于写出高效的SQL语句。这点在高事物系统中尤其明显。
通常,通过OLTP应用发出的SQL语句操作相对较少的行。如果索引可以指向确切的行,那么Oracle数据库可以构建一个精确的计划,通过最短的路径高效的访问那些行。在决策支持系统环境中,查询并不那么重要,因为他们常常访问表中的许多行。在这种情形下,全表扫描更常见,索引几乎不用。这本书主要关注OLTP应用。想获取更多决策支持系统的信息,查询Oracle Database Data Warehousing Guide
1.1.3.1 查询优化和执行计划
当一个SQL语句在Oracle数据库执行,查询优化器在考虑许多相关对象的因素,和查询的特定条件后,决定最优执行计划。这个决定对任何SQL语句都是重要的一步,很大程度上影响执行时间。
在评估过程中,查询优化器评估系统采集的统计信息,决定最佳数据访问路径和其他注意事项。你可以通过在SQL语句中增加hints来覆盖查询优化器的执行计划。
1.2 性能调试特征和工具简介
高效的数据收集和分析是识别和改正性能问题的基本要素。Oracle数据库提供了一些工具,使性能工程师可以收集数据库性能信息。为了收集数据,Oracle数据库提供工具监控性能,诊断问题,调试应用。
Oracle数据库监控和收集特性大部分都是自动地,由Oracle后台程序管理。为了启用自动统计信息收集和自动系能特征,STATISTICS_LEVEL
初始化参数必须设置为
TYPICAL
或者
ALL
。你可以通过使用调试工具
OEM
,
APIs
和视图来管理和展示收集的信息。为了方便使用和利用自动监控和诊断工具,建议使用
OEM
。
1.2.1自动性能调优特征
Oracle
自动性能调优特征包括:
* AWR为了问题诊断和自我调试目的,收集,处理,维护性能统计信息。
* ADDM通过AWR收集的信息,分析Oracle数据库可能出现的性能问题。
* SQL Tuning Advisor使用快速和高效的技术优化SQL语句,无需修改任何语句。
* SQL Access Advisor提供物化视图,索引,物化视图日志的建议。
* 端到端应用跟踪识别系统上,用户,服务器,或者应用组件产生的过高负载。
* 服务生成日志,当探测到即将发生的问题时,自动提供通知。
* 可以从OEM获得额外的建议,例如对一个实例进行内存优化建议。当数据库不使用自动内存管理时会使用内存建议。其他建议用来优化MTTR,收缩段,设置undo空间。
* OEM中的数据库性能页展示主机,实例服务时间,监控和诊断的时间的全部信息。本页可以设置为自动刷新或者手动刷新。
1.2.2 附加的Oracle数据库工具
V$视图是所有Oracle数据库性能调试工具的信息来源。V$视图根据内存在实例中的初始化设置建立。内存结构和视图代表自动由Oracle数据库维护的实例的生命周期。