我对嵌套事务的理解是所有事务只会在最外面的提交中提交 - 这是否意味着如果我在内部提交时有内部提交DELAYED DURABILITY = ON,那么DD将不起作用?
例如:
Begin Transaction
---code--
Begin Transaction
-- code --
Commit With (Delayed_DUrability = On)
Commit
答案 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