10.2 事务日志

10.2 事务日志


10.2.1 事务日志文件

  每个 SQL Server 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。



  事务日志是数据库的重要组件,如果系统出现故障,则可能需要使用事务日志将数据库恢复到一致状态。 删除或移动事务日志以前,必须完全了解此操作带来的后果。




10.2.2 预写事务日志文件

  需要修改数据时,SQL Server 先将数据所在的数据页面从磁盘读入到内存中的数据缓冲区(data buffer),然后修改数据缓冲区里面的数据并记录到日志文件中,最后再将“脏页”回写到硬盘上的数据页面。一般情况下,是由检查点(Checkpoint)负责回写“脏页”。




10.2.3 事务日志的作用

  SQL Server(以及其他的大多数数据库产品)使用了事务日志,事务日志在数据库引擎中主要有以下作用:

(1) 提升性能

  预定事务日志的机制使事务日志文件基本上一直处于一种连续的、小数据量的写入操作。而数据页面只在某些时候(例如,检查点)才被批量写入到磁盘,这对性能有很大的提升。


(2) 重做未完成的事务

  即使在某种场景中遇到内存中的“脏页”没有被写入磁盘(例如,执行 SHUTDOWN WITH NOWAIT 命令),SQL Server 可以借助事务日志恢复所有未完成的事务。


(3) 还原数据

  如果事务日志文件中的事务可以完整地链接在一起,形成事务链(transcation chain),那么 SQL Server 可以回滚至其中任意一个时间点。


(4) 基于事务日志的应用

  支持高可用性、灾难恢复、复制等解决方案:AlwaysOn 可用性组、数据库镜像、日志传送、事务复制等。可以认为传输事务日志记录的成本很低,远远低于传输数据页面(以64KB为单位)的成本。



本文出自 “SQL Server 管理员指南” 博客,谢绝转载!

你可能感兴趣的:(日志,事务)