为何每次日志切换都将调用控制文件事务
|
log switches的发生时机: 正常情况下,当进程产生的重做无法再在日志缓冲中推进索引时也将发生,因为其已经映射到当前日志文件的最后一个块。 log switch触发的条件 log switch调用的过程或步骤 log switches调整的原因 对于oltp环境的用户来说,通常很难容忍低性能。因此最小化日志切换的频率和它们的延迟是很重要的。 log file switch completion等待事件是一个日志切换影响的主要指示器。而且,如果日志切换性能很差,log buffer space通常也会立刻出现。调整日志切换的主要目标是最小化 log file switch completion并清除log buffer space。 使用大的日志文件: 推荐使用尽可能大的日志文件,只要方便归档和最小化日志切换频率。当然必须确保控制检查点确保可接受的恢复性能。 大的在线重做日志文件使用的磁盘空间不是问题,每个在线重做日志文件应该驻留在专用的磁盘对上以避免并发访问,即使是ARCn。 通常如果使用大的日志文件,归档会减少其资源使用的强度。因为减少了聚集重做的威胁。 保持日志文件打开: 调整日志切换最大的潜在位置是打开新的日志文件成员。如果其他进程已经打开了相同文件的文件描述符,open()系统调用将会块很多,这是因为文件的某些信息已经在内核内存中了。对于裸逻辑卷来说尤其如此,其避免了延迟因为反映裸逻辑卷打开的逻辑卷状态数据已经写入了磁盘上的卷组保留区域。 调整控制文件事务: 每次日志切换都将调用两个控制文件事务,控制文件事务在CF enqueue的保护下执行,因此在写入控制文件时不需要更多的并发控制。但是仍然需要确保在事务期间系统失败的可恢复性。 控制文件事务的可恢复性由第一个写入控制文件第二个块的恢复结构提供,并在写入目标块到控制文件前等待那个写完成,因此每个控制文件事务至少有两个写组成。 而且,如果有多个ACTIVE的控制文件,这些I/O操作将会串行完成。因此提高控制文件事务性能的方法是最小化活动的控制文件数量。大多数情况,使用一个ACTIVE控制文件,通过硬件镜像保护。并且使用ALTER DATABASE BACKUP CONTROLFILE TO TRACE提供额外的保护 |
