1.等待事件分类根据OWI(Oracle Wait Interface)定义来看,Oracle等待事件主要分为以下几类: 1.IO Wait Event 2.Lock/Latch Event 3.Latency Wait Event 4.RAC Wait Event主要涉及几个查询视图: V$SESSION_WAIT V$SYSTEM_EVENT V$EVENT_NAME以上视图构成了OWI基本的查询基础。 2.IO如何产生 1.IO如何产生,且先看下面一张图:
PS:多年前画的,有点粗糙,不过还能用吧。1)Physical%20I/O产生:当搜索内存Hash%20chains没有找到合适的buffer,则必须从disk磁盘读取该block到buffer;2)获取CBC(cache%20buffer%20chain%20latch) latch;3)drop%20latch(cache%20buffer%20chain%20latch),将block读入buffer%20cache,对其他user透明操作;4)在其他user也访问该block的并发场景,加载block到buffer过程:
从REPL_AUX中获取一个free的Buffer%20Header;
在该Buffer%20Header加上Block%20Address(rdba)标记;
将组装的好的BH链接到正确的Cache%20Buffer%20Chain上;
同时注入Pin(X),使得其他user可以读取,但是不能物理更改(DML);
释放latch,同时将block加载load进Buffer%20Cache。
2.CacheBuffer%20Chain(Latch)结构:
3.Cache%20Buffer%20Pin与参数" _db_block_max_cr_dba" %20 %20当需要对Buffer%20Block内容进行更改时,必须使用Cache%20Buffer%20Pin进行保护。如果这时对该Buffer%20Block进行查询,那么系统就会以当前Pin%20住的Buffer%20Block为基础块,重构CR镜像。 %20 %20参数 _db_block_max_cr_dba参数限定了单个Block%20Buffer的最大CR镜像数量,同时从侧面限制了Chains的长度,提高了Chains扫描的速度,默认为6:
4.“Buffer%20Busy%20Wait” %20 %20 Cache%20Buffer%20Pin结构中包含了Pin相关的信息,当被阻塞的会话没有请求到Pin时,就可以将自己地址信息等提交到Wait%20list的末端进行等待,等待事件为“buffer%20busy%20wait”,%20由参数 _buffer_busy_wait_timeout决定,默认为1秒钟:
3.令部分人 "谈虎色变的Direct%20IO" 先前在某群有看到有个因为Direct%20IO导致故障的Case,貌似折腾了很久,当事人也似乎对于Direct%20IO有点“谈虎色变”了,借此机会浅析一下。 %20 1.Direct%20IO: %20 用户Session%20PGA中读/写数据,直接到磁盘读取/落盘,而不经过SGA(Buffer%20Cache),从而减少大批量读取/写入数据对BufferCache的性能冲击,提升IO性能。Direct%20IO可以通过设置DISK_ASYNC_IO是否同步或者异步模式,默认异步模式。 2.Direct%20IO主要场景: %20 Direct%20IO主要由排序引起的,例如group%20by/union/distinct/rollup/LOB大对象,以及当排序数据超过PGA(work_area)时,在merge%20join或者load%20data%20使用hint(append)等场景。 3.Direct%20IO如何优化:
减少不必要排序
创建合适的索引
根据索引有序性调整组合索引列索引方式,减少索引排序大小
设置较大的DB_FILE_DIRECT_IO_COUNT和DB_BLOCK_SIZE,提升IO吞吐性能
增加PGA_AGGREGATE_TARGET到合适值
使用UNION%20ALL改写UNION
使用HASH%20JOIN代替SORT%20MERGE
使用NESTED%20LOOPS代替HASH%20JOIN
确保优化器使用正确的驱动表
由于篇幅有限,Oracle等待事件就介绍到这,关于其他维度的等待事件后续有机会再分享。 %20 PS打个小广告,准备了一些深入学习Oracle的资料以及配套录制视频(知识星球),有兴趣的同学请联系微信号或者知识星球:dba悠然同行成长圈(见附录二维码)。
如果觉得本文有所帮助或者启发,欢迎添加好友交流收藏(篇幅有限,更多资讯请关注附录知识星球二维码),2024年我们一路同行!!!。
编辑
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle等待事件了解多少?
Oracle等待事件了解多少?
26-03-03 - 把AI技术加入到数据库,是一种什么体验?
把AI技术加入到数据库,是一种什么体验?
26-03-03 - oracle11.2中分区功能测试之add&split partition对global&local index的影响
- 扒开Oracle数据块,探讨事物槽、UNDO等工作机制!
扒开Oracle数据块,探讨事物槽、UNDO等工作机制!
26-03-03 - 数据库管理-第216期 Oracle的高可用-01(20240703)
数据库管理-第216期 Oracle的高可用-01(20240703)
26-03-03 - Oracle、MySQL 数据导出到CSV方法对比
Oracle、MySQL 数据导出到CSV方法对比
26-03-03 - 集合Robotaxi商业化所有想象,如祺出行登陆港交所,5年增值超60亿
集合Robotaxi商业化所有想象,如祺出行登陆港交所,5年增值超60亿
26-03-03 - 【YashanDB知识库】YashanDB 开机自启
【YashanDB知识库】YashanDB 开机自启
26-03-03 - 好烦啊,1个SQL干崩核心系统长达12小时!
好烦啊,1个SQL干崩核心系统长达12小时!
26-03-03 - 数据库管理-第220期 Oracle的高可用-03(20240715)
数据库管理-第220期 Oracle的高可用-03(20240715)
26-03-03
