嵌套事务 - 延迟耐久性

时间:2018-03-28 08:45:17

标签: sql-server tsql transactions

我对嵌套事务的理解是所有事务只会在最外面的提交中提交 - 这是否意味着如果我在内部提交时有内部提交DELAYED DURABILITY = ON,那么DD将不起作用?

例如:

   Begin Transaction
      ---code--
      Begin Transaction
       -- code --
      Commit With (Delayed_DUrability = On)
   Commit

1 个答案:

答案 0 :(得分:2)

DELAYED DURABILITY = ON与嵌套事务无关。 它仅用于指示SQL Server关闭事务的WAL保护。 DELAYED Durability首先启用并允许在数据库级别上产生任何效果。

结果,事务持续时间可以更快,因为SQL Server不应该在数据首次写入事务日志时等待。但价格 - 如果数据库崩溃,则存在数据损坏的风险。

接下来,SQL Server不支持自治事务,因此嵌套事务是一种语法糖..:

A SQL Server DBA myth a day: (26/30) nested transactions are real