延迟持久性 - 是否可以在崩溃时防止数据丢失

var*_*ble 0 sql-server transaction-log

本书建议“延迟持久性可能导致数据丢失,因为您可能会丢失已提交的事务。如果 SQL Server 在事务提交后崩溃,但在 60KB 缓冲区被填满之前,该事务将无法恢复,因为它丢失了。”

但是,事务在事务日志中不可用并且可以重播以进行恢复吗?

https://books.google.co.in/books?id=5Es3DwAAQBAJ&pg=PT159&lpg=PT159&dq= “数据+损耗+是具有+ + +可能延迟+耐久性” &源= BL&OTS = Mwmh4cKa6G&SIG = tctRb18itYQyBxo7lLhkT1w4-Z4&HL = EN&SA = X&VED =2ahUKEwjAyau784jeAhWHMo8KHW1XCi4Q6AEwAHoECAEQAQ#v=onepage&q="data%20loss%20is%20possible%20with%20delayed%20durability"&f=false

Bre*_*zar 6

当您启用延迟持久性时,事务在提交之前不会写入事务日志文件。

这就是为什么事务在日志中不可用的原因,并且在这种情况下它们将永久丢失。

  • @variable Brent 的回答很简短,但很准确。如果您想要更详细的答案,请查看 Kin 在您的问题的评论中发布的链接。(这个 https://sqlperformance.com/2014/04/io-subsystem/delayed-durability-in-sql-server-2014 和这个 https://www.sqlskills.com/blogs/paul/delayed-durability-sql -server-2014/)。延迟持久性的全部意义在于它延迟了将您的事务写入磁盘的时间——甚至在事务日志中也不行。因此,您交易的**持久性**被**延迟**。 (5认同)
  • @variable 日志文件在磁盘上。那就是它生活的地方。我认为您误解了日志文件和数据页之间的区别。SQL Server 从未阻止事务写入数据页(MDF/NDF 文件)——这些事务是在事务完成后很长时间异步写入的。 (2认同)