用于估计物理日志的大小的策略

物理日志的大小取决于两个因素:事务生成物理日志活动的速率和是否设置了 RTO_SERVER_RESTART 配置参数

事务生成物理日志活动的速率可影响检查点性能。在检查点处理期间,如果因事务持续生成物理日志数据而导致物理日志开始变得太满,那么数据库服务器将阻塞事务以使检查点完成,并避免物理日志溢出。

要避免事务阻塞,数据库服务器必须具有足够的物理日志空间来包含检查点处理期间出现的所有事务活动。在物理日志填充度达到 75% 时触发检查点。在物理日志填充度达到 75% 时,必须在完成检查点处理之后才能使用剩余的 25% 的物理日志。一旦系统检测到有物理日志溢出的可能性,就会发生事务阻塞,因为每个活动事务都可能生成一个物理日志活动。

例如,假设您具有 1 千兆字节的物理日志和 1000 个活动事务。如果每个事务同时处于临界区,那么这 1000 个活动事务具有生成大约 80 兆字节物理日志活动的可能性。当填入 750 兆字节的物理日志时,数据库服务器将触发检查点。如果在使用 920 兆字节物理日志时检查点仍未完成,那么将出现事务阻塞直到检查点完成。如果发生事务阻塞,那么服务器将自动触发更频繁的检查点以避免事务阻塞。您可以禁用自动检查点的生成。

如果存在大量脏分区,那么即使物理日志填充度不到 75%,服务器也可能触发检查点,因为将修改的分区数据清空到磁盘需要物理日志空间。 当服务器检查物理日志填充度是否达到 75% 时,服务器还会检查以下情况是否为真:
(使用的物理日志页数 + 脏分区数量)>= ((物理日志大小 * 9)/10)

有关检查点处理和自动检查点的更多信息,请参阅检查点

估计物理日志大小时要考虑的第二个因素取决于是否使用 RTO_SERVER_RESTART 配置参数指定了快速恢复的目标时间量。如果无需考虑快速恢复时间,那么不需要启用 RTO_SERVER_RESTART 配置参数。如果为 RTO_SERVER_RESTART 配置参数指定值,那么事务活动将生成附加物理日志活动。

通常,此附加物理日志活动对事务性能影响较小或没有影响。额外的日志记录用于在快速恢复期间辅助缓冲池,以便以最佳方式执行日志重放。如果物理日志比所有缓冲池的总大小要大很多,那么快速恢复期间将对页清空并出现缺页故障。页清空和缺页故障大幅减小了快速恢复性能,而且数据库服务器不能维护 RTO_SERVER_RESTART 策略。

对于缓冲池空间小于 4 千兆字节的系统,物理日志的大小可定在所有缓冲池总大小的 110%。对于较大的缓冲池,以 4 千兆字节的物理日志空间开始,然后监视检查点活动。如果检查点发生过于频繁,似乎会影响性能,请增加物理日志大小。

为数据库服务器配置了较小的物理日志并且该服务器具有大量用户时,可能会出现一种称为物理日志溢出的罕见情况。遵循上述有关大小的准则可帮助避免物理日志溢出。每当消息日志检测到未达到最佳标准的配置时,数据库服务器将对其生成性能警告。

如果检测到未达最佳标准的配置,那么您可以使用 onstat -g ckp 命令来显示配置建议。