与IO相关的等待事件troubleshooting-系列8

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 与Redo日志IO相关的等待事件:        Redo日志活动期间会有很多的等待事件,而且他们大多是和IO相关的。最重要的两个就是‘log file sync’和‘log file parallel write’。

与Redo日志IO相关的等待事件

        Redo日志活动期间会有很多的等待事件,而且他们大多是和IO相关的。最重要的两个就是‘log file sync’和‘log file parallel write’。

        Oracle前台进程(或叫服务器进程)等待‘log file sync’事件,LGWR进程等待‘log file parallel write’。

        尽管我们通常会从Statspack报告的“Top 5 Wait/Timed Events”节中看到‘log file sync’等待事件,为了理解这个等待事件的原因,我们首先看下‘log file parallel write’等待事件。


'log file parallel write'

        当正在将日志记录从内存的日志缓冲区拷贝到当前磁盘的redo日志组成员的日志文件时,LGWR后台进程会等待这种等待事件。如果允许使用异步IO,那就可以并行执行写操作,否则这种写操作就不得不一个成员一个成员地按照顺序进行。

        然而,LGWR不得不一直等待,直到这个等待事件完成之前,所有成员日志文件的IO操作完成。因此,决定等待时间长度的因
素是IO子系统执行日志文件成员写操作的速度。
        为了减少这种等待事件的等待时间,一种方法就是降低数据库产生的redo日志量:
1. 充分使用UNRECOVERABLE/NOLOGGING选项。
2. 降低redo日志组成员的数量到最小,确保同一时刻不会丢失所有的日志文件组成员。
3. 不要不必要地让表空间处于BACKUP状态。
4. 若需要附加日志达到需要的功能,那么就使用最小等级,例如LogMiner,Logical Standby或Streams。
        其它调优IO的方法:
1. 将redo日志组成员分散到不同的存储空间,以便使用并行写不会互相争用。
2. 不用让redo日志文件使用RAID-5。
3. 让redo日志文件使用裸设备。
4. 让redo日志文件使用更快的磁盘。
5. 如果正在使用归档,对当前redo日志组成员的写操作不会和正在进行归档的日志文件组读操作互相争用。

'log file sync'
        当执行COMMIT或ROLLBACK操作时,Oracle前台进程会产生等待事件,等待操作的完成。部分(不是全部)这种等待事件会包含等待LGWR将session交易操作的redo日志内容从日志缓冲内存刷到磁盘。
        所以,当一个前台进程正在等待‘log file sync时,LGWR也会花费一部分时间在‘log file parallel write’上。
        理解‘log file syn’背后原理的关键就是对比‘log file syn’与‘log file parallel write’平均等待时间。
1. 如果这两个时间相差不多,那么redo日志文件IO就是造成这种延迟的原因,接下来需要对其进行调优。
2. 如果‘log file parallel write’显著地不同,例如比较小,那么延迟就是由产生于COMMIT/ROLLBACK(和IO无关)期间的Redo日志机制的其它部分导致。有时可能是redo闩的闩锁争用,这时会出现‘latch free’或‘LGWR wait for redo copy’等待事件。

'log file sequential read' and 'log file single write'

        这两种等待时间都是和IO相关的,当出现redo日志的IO争用时,一般他们都和‘log file parallel write’一起出现。


'switch logfile command' ,'log file switch completion'和'log file switch (clearing log file)'

        更多LGWR与IO相关的等待事件,可参考之前的方法调优。


'log file switch (checkpoint incomplete)'

        当检查点活动未足够快地产生时,会有这种等待事件的产生。


'log switch/archive'和'log file switch (archiving needed)'

        当归档模式打开,这种等待事件的产生表名归档操作执行没有足够快。


(未完待续)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
存储 Java 容器
网络编程实战之高级篇, 彻底解决面试C10k问题, 高并发服务器, IO多路复用, 同时监视多个IO事件
网络编程实战之高级篇, 彻底解决面试C10k问题, 高并发服务器, IO多路复用, 同时监视多个IO事件
网络编程实战之高级篇, 彻底解决面试C10k问题, 高并发服务器, IO多路复用, 同时监视多个IO事件
|
存储 SQL
与IO相关的等待事件troubleshooting-系列7
与控制文件IO相关的等待事件:         这种等待事件通常产生于一个或多个控制文件的IO。像redo日志切换和检查点事件,都会产生频繁的控制文件访问。
788 0
|
SQL Oracle 关系型数据库
与IO相关的等待事件troubleshooting-系列4
与数据文件IO相关的等待事件: 接下来的等待事件是与数据文件的IO操作时产生的。 'db file sequential read'         这是一种最常见的IO相关的等待。
938 0
|
SQL Oracle 关系型数据库
与IO相关的等待事件troubleshooting-系列5
'db file scattered read'         这是另一种常见的等待事件。他产生于Oracle从磁盘读取多个块到Buffer Cache中非连续("scattered")缓存的时候。
1033 0
|
SQL 存储 Oracle
与IO相关的等待事件troubleshooting-系列6
'db file parallel read'         当Oracle从多个数据文件并行读到内存(PGA或Buffer Cache)的非连续缓冲时,可以看到这种等待事件。
885 0
|
存储 数据库 关系型数据库
与IO相关的等待事件troubleshooting-系列1
近来XX应用充分暴露出开发人员最初只关心功能,未考虑性能的问题,夜维、OLTP应用均出现了不同程度的与数据库相关的性能问题。 这个应用所在磁盘的IO较差,原因在于这块磁盘较旧,已进入更换的流程,但短期内还不能更换,对应用是个极大的隐患。
756 0
|
Oracle 关系型数据库 数据库
与IO相关的等待事件troubleshooting-系列2
Troubleshooting步骤: Troubleshooting与IO相关的等待: 数据库性能调优方面一项关键的方法就是响应时间分析。找出时间都花费在数据库的哪些环节。
1090 0