技术开发 频道

log buffer及日志管理深入分析及性能调整(三)

......接上篇【IT168技术文档】
3. log buffer的优化
    我们一般不太会关注日志缓冲区的优化。这是因为日志缓冲区的争用一般不会是数据库的主要性能问题。前面我们已经知道,日志块的都是按照顺序往里写,不存在更新日志块的以前的内容,同时每个日志块大小都很小,所以几乎不会有多个进程抢同一个日志块的情况。其争用主要是进程由于找不到可用的日志块而必须等待的情况。而我们知道LGWR负责释放脏的日志块从而提供可用日志块,LGWR在日志缓冲区中的脏日志块超过1M或者超过日志缓冲区的1/3时就会启动,而且在将重做记录写入联机日志文件时,都是按照顺序写入,不存在类似DBWR的随机写入,所以写入的速度是非常快的,除非硬盘的I/O速度有很大的问题。可以执行下面的SQL语句来判断硬盘的I/O是否过慢。

SQL > select total_waits,time_waited,average_wait,time_waited/total_waits as avg
2 from v$system_event where event = 'log file parallel write';
TOTAL_WAITS TIME_WAITED AVERAGE_WAIT AVG
----------- ----------- ------------ ----------
314346633 129581305 0 .41222425

    我们可以看到,AVERAGE_WAIT表示LGWR完成一次写入平均需要多少时间,是用等待时间除以等待次数得出的、并四舍五入以后得到的平均值(AVG是没有四舍五入以后的值)。如果AVERAGE_WAIT大于1,就表示硬盘的I/O比较慢。
不过,对于整个数据库的健康检查来说,还是需要衡量一下数据库的日志缓冲区是否存在健康隐患。所以也还是需要了解一些有关日志缓冲区性能的一些指标。
0
相关文章