前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle-等待事件解读

Oracle-等待事件解读

作者头像
小小工匠
发布2021-08-16 14:45:16
4670
发布2021-08-16 14:45:16
举报
文章被收录于专栏:小工匠聊架构

概述

Oracle-OLAP和OLTP解读

Oracle-index索引解读

Oracle-分区表解读

Oracle-锁解读

Oracle-等待事件解读

Oracle-procedure/cursor解读


等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件。

1). 空闲等待事件

ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。

2). 非空闲等待事件

专门针对 ORACLE 的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的。

在 Oracle 10g 中的等待事件可以通过 v$event_name 视图来查看等待事件的相关信息。

常见等待事件

Buffer busy waits

从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个 Buffer(数据块),但是导致这个现象的原因却有很多种。

常见的两种是:

  • 当一个会话视图修改一个数据块,但这个数据块正在被另一个会话修改时
  • 当一个会话需要读取一个数据块,但这个数据块正在被另一个会话读取到内存中时。

Oracle 操作的最小单位是块( Block),即使你要修改一条记录,也需要对这条记录所在的这个数据块做操作。

当一个会话修改一个数据块时,是按照以下步骤来完成的: ( 1) 以排他的方式获得这个数据块( Latch) ( 2) 修改这个数据块。 ( 3) 释放 Latch。


Buffer latch

内存中数据块的存放位置是记录在一个 hash 列表( cache buffer chains)当中的。

当一个会话需要访问某个数据块时,它首先要搜索这个 hash 列表,从列表中获得数据块的地址,然后通过这个地址去访问需要的数据块,这个列表 Oracle会使用一个 latch 来保护它的完整性。

当一个会话需要访问这个列表时,需要获取一个 Latch,只有这样,才能保证这个列表在这个会话的浏览当中不会发生变化。

产生 buffer latch 的等待事件的主要原因是:

  • ( 1) Buffer chains 太长,导致会话搜索这个列表花费的时间太长,使其他的会话处于等待状态。
  • ( 2) 同样的数据块被频繁访问,就是我们通常说的热快问题。

Control file parallel write

控制文件频繁写入的原因很多,比如: ( 1) 日志切换太过频繁,导致控制文件信息相应地需要频繁更新。 ( 2) 系统 I/O 出现瓶颈,导致所有 I/O 出现等待。

当系统出现日志切换过于频繁的情形时,可以考虑适当地增大日志文件的大小来降低日志切换频率。

当系统出现大量的 control file parallel write 等待事件时,可以通过比如降低控制文件的拷贝数量,将控制文件的拷贝存放在不同的物理磁盘上的方式来缓解I/O 争用。

等等…….

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/11/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 常见等待事件
    • Buffer busy waits
      • Buffer latch
        • Control file parallel write
          • 等等…….
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档