调优日志切换(TuningLogSwitches)

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

调优日志切换(TuningLogSwitches)

 

日志切换:LGWR进程停止写日志到当前日志文件,关闭日志文件,打开新的日志文件并写日志缓存中的数据到新的日志文件。

 

日志切换可以命令ALTERSYSTEMSWITCHLOGFILE或者ALTERSYSTEMARCHIVELOG来手工执行,也可以通过设置参数LOG_ARCHIVE_START使其自动执行。一般的原因是一个进程不能将生成的重做日志从缓存中写到当前的日志文件,因为已经使用到当前日志文件的最后一个数据块。

 

 

日志切换时做到的相关的步骤顺序:

 

1、 执行一个控制文件事务来选择下一个日志文件以使用并清除控制文件入口。一般是选择当前带有最小日志序列号的日志文件来作为下一个使用,在这一步上,如果有必要,日志切换将会等待DBWR进程完全前面一个日志文件的日志切换的CHECKPOINT,等待ARCn进程完成归档。

2、 使用redocopylatches和redogenerationlatches两个latch来阻止重做日志在日志缓存中生成(标记日志缓存状态),并将日志缓存中的数据写到日志文件(磁盘)中。如有可能用并行的方式,会同时将文件中最后一个记录的SCN号写到头数据块中(headerblock)。在这些“写”操作都完成之后LGWR进程关闭这个日志文件。

3、 提升SCN值执行第二个控制文件事务来将日志文件标记为CURRENT,把之前的日志文件标记为ACTIVE,一旦DBWR进程完成了日志切换的CHECKPOINT后,这个文件的状态(之前的日志文件)会被标记为INACTIVE。如果运行在归档模式下,LGWR进程通过控制文件中日志文件的入口段将这个日志文件(之前的日志文件)添加到归档连接单中,如果启动的是自动归档,LGWR会激活ARCn后台进程将这个日志文件进行归档。如果当前使用的所有ARCn进程都处于忙状态,LGWR会激活一个新的ARCn进程,ARCn进程数由参数log_archive_max_processes。

4、 最后一步,LGWR进程打开新日志文件组的所有成员,并将新的日志序列号和底SCN写到头数据块(headerblock)。然后将日志缓存状态改为可以生成日志。

 

日志切换可能会花较长时间,经常是以秒记,日志切换过程有较大的调优潜力。相对于连续的缓慢的性能,OLTP系统的用户一般更难忍受数据库的间断的较差的性能,所以,减少日志切换频率,减少切换间隔时间是非常重要的。

 

在系统性能方面,日志切换冲突的主要表现在于logfileswitchcompletion等待事件上。如果日志切换性能差,另外一个等待事件logbufferspace等待也会即刻产生。对日志切换调优就是要先调优logfileswitchcompletion等待事件然后是logbufferspace等待。

 

使用大的日志文件:为了最小化日志切换频率,可以加大日志文件的SIZE(尽可能大,最易归档),也要控制CHECKPOINT(如设置参数fast_start_mttr_target)来使数据库恢复性能最优。

每个联机日志文件应该放在专有的磁盘上以免ARCn进程同时进入访问该磁盘。不要使用小的日志文件来保存磁盘空间,因为保存下来的空间不会再被使用(联机日志文件大小确定后是不会再增长的,所以不会用到您所保留下来的这些空间)

增加联机日志文件会提高归档的间隔时间。、

另外一方面,在使用了大的联机日志文件时,要通过调优归档以减少资源使用强度。

 

保持日志文件是打开状态:调整日志切换的速度最大的调优的潜在地方在于新日志文件成员的打开过程,打开新日志文件是用的指令open()。如果有其他的一个进程在同一个文件中已经有打开文件的描述符则操作系统调用这个命令来打开新的日志文件的速度是很快的,主要原因是关于文件的一些信息都放在了系统的内核内存中。

 下面这个脚本用于在实例启动时将日志文件的信息放到内核内存中,可以在一定的程度上提高日志切换的速度。这个是SHELL脚本,用于UNIX操作系统中,用CRON来定期每天实现:hold_logs_open.sh共4页  第1页   
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
个人分类: 数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭