《Oracle数据库性能优化方法论和最佳实践》——2.2 基于OWI的优化方法论

简介:

本节书摘来自华章计算机《Oracle数据库性能优化方法论和最佳实践》一书中的第2章,第2.2节,作者:柳遵梁 潘敏君 应以峰著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.2 基于OWI的优化方法论

2.2.1 OWI优化方法论简述
OWI,是Oracle Wait Interface的简称。最开始OWI并不是为了性能优化而出现的,而是出于调试的目的,用来明确当前正在发生什么事情,在Oracle 7中它就已经以初级的方式存在了。当Oracle 8i极其明确地把OWI引入性能优化时,数据库性能优化方法论就出现了划时代的飞跃。OWI方法论让Oracle第一次跳出部件构成性能的视野,从一个旁观者的角度或者业务流程的角度来考虑问题,使其与现实世界的基于流程协调的流程优化相符合。
排队和冲突是现实世界中时时刻刻普遍发生的事件,我们吃饭要排队、购物要排队、上车要排队、看病要排队,甚至走路都要排队。如果不想被前面的人或者物堵住,需要不断地变换通道或者将障碍进行拆除,我们的观点和行为会不断地发生冲突。Oracle OWI方法论充分地认识到了排队和冲突是生活的主题,是数据库流程的主题。例如,特别典型的是看医生,每个人都有切身体会。排队挂号,排队看医生,排队检查,排队拿药,各种排队合计3个小时,医生看病处理不超过5分钟。只要可以降低排队时间,就可以提高效率,降低时间成本。OWI就是基于这个朴素的理念的,只要使各种等待所消耗的时间尽可能低,就可以提高业务系统的性能。对于Oracle来说,OWI的发展就是尽可能精细地衡量等待事件;对于性能优化者而言,就是发现等待事件的原因并且尽可能降低或者消除它。
OWI方法是快速优化Oracle性能的最有效方式,OWI的精准定位使性能优化不再需要到处进行衡量。某种程度上,OWI方法论类似于故障处理的思路,处理焦点在局部,使优化者无需了解业务流程,无需进行全局流程的协调,降低了对性能优化者的能力要求。
至今为止,OWI方法依然是最为快速有效的性能优化方法。虽然如此,由于OWI关注的局限性,有一些缺陷,使其解决复杂的性能问题时有些力不从心,更多只作用在突然变化的性能异变上。
OWI方法事实上并不是从业务(流程)的角度看问题,而是从CPU的角度看问题,只要CPU一直处于忙碌之中,就假设性能是优异的。这就忽略了在很多场合下 CPU的处理效率才是性能问题的本源所在。OWI方法从本质上与基于局部命中率分析方法类似,都是眼睛向内看。一个是只要我忙,系统就好;一个是只要我好,系统就好,总体来说都缺乏流程的概念。OWI的使用如此简单,效果是如此出色,使绝大部分性能优化者不再去关心流程,而仅关心发生性能问题的某一点。OWI方法在快速优化性能的同时,事实上割裂了业务流程之间的关系,往往使复杂的性能优化工作顾此失彼。
OWI优化工作者总是精心研究常见的Oracle等待事件,研究其等待事件可能发生的原因以及对应的解决方案。OWI优化方法获得各个级别DBA的厚爱,除了其简单有效之外,最为重要的原因在于其可以不用过多考虑业务相关问题,只用采用故障解决的思维逻辑来解决性能优化问题。
2.2.2 OWI方法论的可检测体系
Oracle数据库为基于OWT的优化方法论提供了极为完善的可测量体系,且包含极为丰富的不同粒度,从session级别到对象级别到系统级别,从实时信息到时间点快照,甚至在SQL级别也尽可能提供准确的等待事件信息。
1.?基于session的Oracle wait event实时及统计信息
当前实时的wait event信息:v$session、v$session_wait、v$session_wait_class。
最近10次的wait event信息:v$session_wait_history。
100ms到秒级别的快照信息:v$active_session_history。
时间范围快照:wrh$_active_session_history。
抽样:dba_hist_active_sess_history。
启动以来的事件统计信息:v$session_event。
2.?基于对象的Oracle wait event的信息
启动以来对象的实时统计信息:V$SEGMENT_STATISTICS。
时间范围快照:WRH$_SEG_STAT。
3.?基于实例/全局的Oracle wait event的信息
1)基于实例的Oracle wait event信息。
分钟级别的实时统计信息:v$eventmtric、v$WAITCLASSMETRIC。
基于时间范围快照的统计信息:wrh$_system_event、wrh$_bg_event_summary、DBA_HIST_WAITSTAT。
启动以来的事件统计信息:v$system_event、$SYSTEM_WAIT_CLASS、V$SERVICE_EVENT。
2)均衡平均化的事件柱状体信息:
启动以来的等待事件柱状图信息:V$event_histogram。
时间范围快照的等待事件柱状图信息:wrh$_event_histogram。
3)特定事件的等待事件统计:
启动以来的buffer busy wait Event: v$waitstat。
时间范围快照的buffer busy wait Event: wrh$_waitstat。
4)等待事件的相互链接关系:
等待session之间的等待事件链:V$wait_chains(Oracle 11g)。
4.?基于SQL的等待事件描述
实时的session事件信息:v$session。
实时的SQL级别事件信息:v$sql_monitor。
100ms~1s级别的事件信息:v$active_session_history。
基于快照和抽样:wrh$_active_session_history、dba_hist_wait_history、wrh$_sqlstat。
启动以来的统计:v$sql、v$sqlarea、v$sqlstat。
2.2.3 OWI方法中wait event的发展
Oracle数据库在OWI方法上投入了大量的精力,每一个版本的更新都在OWI可测量指标体系上做出了持续改进。
Oracle 10gR2共有12个事件分类,合计事件数量874个,如图2-2所示。
Oracle 11gR2共有13个事件分类,合计事件数量1116个,如图2-3所示。
无论是874个等待事件还是1116个等待事件,它们都是一个极为惊人的数字,在缺乏有效背景资料的前提下,几乎很难对所有等待事件进行研究,这使性能优化者陷入一定的困境。OWI方法在这里真正体现了故障排除的思维逻辑,经验的积累对于性能优化者来说起到了决定性作用。

screenshot

screenshot

相关文章
|
2月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
350 93
|
1月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
1月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
179 0
|
4月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
1月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
181 6
|
2月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
538 5
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
281 8
|
4月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
246 11
|
4月前
|
机器学习/深度学习 SQL 运维
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
162 4
|
4月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。

热门文章

最新文章

推荐镜像

更多