以下是SQL Server 461培训套件的除外 -
[...]如果数据库服务器在事实之前意外关闭 成功提交可以写入日志,当SQL Server启动数据库时,事务将回滚,任何数据库更改都会撤消。
Microsoft页面(https://msdn.microsoft.com/en-us/library/jj835093(v=sql.120).aspx#WAL)读取,
必须先将日志记录写入磁盘,然后才能从缓冲区缓存中删除关联的脏页并将其写入磁盘。 [...]提交事务时,日志记录将写入磁盘。
任何尚未提交的事务都不会将其日志记录刷新到磁盘,因此不会将具有数据修改的脏页刷新到磁盘。
我只能看到尚未刷新到磁盘的前滚更改(来自已提交的事务),但这种回滚方案似乎不可能,因为磁盘上永远不会有更改(从非提交的事务)开始用。
我误解了哪一部分?
答案 0 :(得分:4)
任何未被COMMITed的事务都不会将其日志记录刷新到磁盘
这不正确。在提交时,必须将与事务相关的所有日志记录刷新到磁盘,但这肯定会更早发生。在持久保存该部分日志之前,它不必等待所有事务提交。
磁盘永远不会有变化(来自未经授权的交易) 开头。
这不正确。
未提交的交易的更改可以在永久记录在交易日志中后立即写入光盘。
每checkpoint发生一次。
当然,不允许将这些更改写入光盘上的数据文件,直到具有这些更改的事务日志被刷新到光盘,因为无法恢复。