Answers:
不幸的是,到目前为止,关于COMMIT的工作方式,答案中存在许多错误,因此,我将添加另一个错误。有关详细信息和SQL Server 2000 I / O基础知识,请参见工作原理:Bob Dorr的SQL Server I / O演示。下面是它的工作原理:
所有完全记录的数据写入(更改)均按以下顺序进行(请参阅了解SQL Server如何执行查询:写入数据):
COMMIT执行以下操作
CHECKPOINT执行以下操作(简化),请参阅检查点如何工作以及记录的内容:
对于最少记录的操作,写入方式有所不同,请参阅可以最小记录的操作。最少记录的操作大致如下(简化):
提交事务(COMMIT)后,该事务将写入RAM中的事务日志中。
在甚至根据查询请求更改页面或数据之前,将事务写入事务日志。这称为预写日志记录(WAL)。如果在内存中更新页面时SQL Server崩溃,则WAL确保DB引擎可以读取事务日志并回滚事务。这是RDBMS的ACID属性。
当发生CHECKPOINT时(经过一些时间和/或某些事务和其他条件之后),最后一个CHECKPOINT和当前事务之间的事务将写入磁盘。
一个检查点将脏页从缓冲区刷新到磁盘。对于tempdb,其行为略有不同。脏页是自从磁盘读取以来已更改的页。此检查点过程会在事务日志中创建一个标记,直到已提交事务为止。发生故障后,恢复会知道所有已达到该标记的事务都已提交。您可以使用TSQL命令手动发出检查点。
发生备份日志时,数据将写入MDF文件。
否,发生备份日志时,SQL Server将事务日志信息从数据库日志文件复制到要写入备份的磁盘上。备份操作从磁盘读取数据并将数据写入磁盘。
我希望您阅读以下链接
Mark已指出了解SQL Server中的日志记录和恢复
下面将为您澄清一些事情:
提交事务(COMMIT)后,该事务将写入RAM中的事务日志中。
当发生CHECKPOINT时(经过一些时间和/或某些事务和其他条件之后),最后一个CHECKPOINT和当前事务之间的事务将写入磁盘。
发生备份日志时,数据将写入MDF文件。
参考: