未缓冲的事务日志记录

如果事务是对使用未缓冲日志记录的数据库进行的,那么逻辑日志缓冲区中的记录可保证在落实处理期间写入磁盘。当应用程序在 COMMIT 语句之后(对于分布式事务,在 PREPARE 语句之前)重获控制权时,逻辑日志记录在磁盘上。一旦落实缓冲区中的任何事务(即,将落实记录写入逻辑日志缓冲区),数据库服务器就立即清仓记录。

当数据库服务器清仓缓冲区时,仅将已使用的页写入磁盘。已使用的页包含那些仅部分已满的页,但这样就浪费了一些空间。由于这个原因,相比在同一数据库服务器上的所有数据库均使用已缓冲的日志记录这种情况而言,磁盘上的逻辑日志文件会更快地填满。

未缓冲的日志记录对于大多数数据库而言是最好的选择,因为它保证所有已落实的事务可得以恢复。在发生故障的情况下,仅丢失在发生故障时未落实的事务。 但是,有了未缓冲的日志记录,数据库服务器会更频繁地将逻辑日志缓冲区清仓到磁盘,而缓冲区将包含更多部分已满的页,因此它比已缓冲的日志记录会更快地填充逻辑日志。