【问题】对于日志缓冲区的数据落盘的方式,11g增加一种新的方式就是polling的方式,传统方式是post/wait方式。oracle底层自动判断何时用何种方法来完成lgwr进程的写任务。我们要不要相信oracle底层的这种调和能力呢?
【分析】对于post/wait方式来讲,客户端做了commit之后,需要等待事件完成。oracle一旦完成会通知用户进程,用户进程立刻感知。但是这一通知post,会耗费大量CPU资源。polling是oracle前台进程启动检查任务,自动检查后台lgwr写入情况,耗费CPU资源比较少,但是用户进程并不一定能立刻感知。所以两种方法各有千秋。但是关键是后台实现两种方法切换的时候要耗费系统性能,尤其在繁忙的时候频繁切换的话反而会导致数据库性能下降。awr出现大量‘Log file sync’。详见下面的bug:
Bug 13707904 - LGWR sometimes uses polling, sometimes post/wait (Doc ID 13707904.8)
【建议】关掉切换,采用传统方式。
alter system set "_use_adaptive_log_file_sync"='FALSE' scope=spfile sid='*';
【问题】对于日志缓冲区的数据落盘的方式,11g增加一种新的方式就是polling的方式,传统方式是post/wait方式。oracle底层自动判断何时用何种方法来完成lgwr进程的写任务。我们要不要相信oracle底层的这种调和能力呢?
【分析】对于post/wait方式来讲,客户端做了commit之后,需要等待事件完成。oracle一旦完成会通知用户进程,用户进程立刻感知。但是这一通知post,会耗费大量CPU资源。polling是oracle前台进程启动检查任务,自动检查后台lgwr写入情况,耗费CPU资源比较少,但是用户进程并不一定能立刻感知。所以两种方法各有千秋。但是关键是后台实现两种方法切换的时候要耗费系统性能,尤其在繁忙的时候频繁切换的话反而会导致数据库性能下降。awr出现大量‘Log file sync’。详见下面的bug:
Bug 13707904 - LGWR sometimes uses polling, sometimes post/wait (Doc ID 13707904.8)
【建议】关掉切换,采用传统方式。
alter system set "_use_adaptive_log_file_sync"='FALSE' scope=spfile sid='*';