假设,对于 SQLServer2008R2 及更高版本,具有完整恢复模式数据库。
我一直认为:
当一个事务被提交 (COMMIT) 时,该事务被写入 RAM 中的事务日志。
当 CHECKPOINT 发生时(在一段时间和/或一些事务和其他条件之后),最后一个 CHECKPOINT 和当前事务之间的事务被写入磁盘。
当 BACKUP LOG 发生时,数据将写入 MDF 文件。
我对么?我的一些同事说我错了,即使有 BOL 也很难找到正确的答案。
谢谢!
Rem*_*anu 22
不幸的是,到目前为止,关于 COMMIT 的工作原理,答案中存在许多错误,因此我将添加另一个错误。有关详细信息和SQL Server 2000 I/O 基础知识,请参阅工作原理:Bob Dorr 的 SQL Server I/O 演示文稿。下面是它的工作原理:
所有完全记录的数据写入(更改)都按照以下顺序发生(请参阅了解 SQL Server 如何执行查询:写入数据):
COMMIT 执行以下操作
A CHECKPOINT 执行以下操作(简化),请参阅检查点如何工作以及记录的内容:
对于最少记录的操作,写入的工作方式不同,请参阅可以最少记录的操作。粗略地,最少记录的操作如下(简化):
当一个事务被提交 (COMMIT) 时,该事务被写入 RAM 中的事务日志。
在查询请求更改页面或数据之前,事务已写入事务日志。这称为预写日志记录 (WAL)。如果在内存中更新页面时 SQL Server 崩溃,WAL 可确保数据库引擎可以读取事务日志并回滚事务。这是 RDBMS 的 ACID 属性。
当 CHECKPOINT 发生时(在一段时间和/或一些事务和其他条件之后),最后一个 CHECKPOINT 和当前事务之间的事务被写入磁盘。
检查点将脏页从缓冲区刷新到磁盘。tempdb 的行为略有不同。脏页是自从磁盘读取后发生更改的页。此检查点过程在事务日志中创建一个标记,直到事务已提交。失败后,恢复知道该标记之前的所有事务都已提交。您可以使用 TSQL 命令手动发出检查点。
当 BACKUP LOG 发生时,数据将写入 MDF 文件。
不,当备份日志发生时,SQL Server 会将事务日志信息从数据库日志文件复制到您正在写入备份的磁盘。备份操作从磁盘读取数据并将数据写入磁盘。
我希望您阅读以下链接
了解 SQL Server 中的日志记录和恢复Mark 已经指出
归档时间: |
|
查看次数: |
32797 次 |
最近记录: |