您是否曾经取消过一笔大交易,但是发现它并不会立即取消?您必须等待一段时间才能取消交易。那么为什么取消大型事务花费如此长时间?
因为SQL Server必须读取事务日志,才能将数据页还原到长时间运行的事务之前的映像。从事务日志中还原所有这些旧图像会花费时间,这就是为什么事务不会立即终止的原因。
With the introduction of SQL Server 2019, the SQL Server team has implemented a database recovery option called “Accelerated Database Recover”. This new database option can be turned on by using the following command: ALTER DATABASE MyDB SET ACCELERATED_DATABASE_RECOVERY = ON;
在较高级别上为数据库启用此新功能时,SQL Server引擎会将更新后的行的新旧版本存储在数据库中的永久版本存储(PVS)中,而不是将这些行版本存储在tempdb中。此外,所有非版本化操作都存储在称为sLog的新日志中。通过这样做,SQL Server可以通过异步从数据库读取旧行版本来撤消事务,并使用sLog来回滚非版本化的操作。由于旧行版本存储在PVS中,因此数据库引擎几乎可以即时回滚版本更新。
此新数据库功能是针对具有以下功能的目标数据库:
1、具有长期事务的工作负载
2、导致事务日志显着增长的事务
3、由于事务取消而回滚数据库时长时间不可用的数据库,或者手动回滚或SQL Server重新启动后,数据库恢复需要很长时间。
如果您希望加快回滚过程并可以使用PVS所需的额外数据库空间,则可能需要打开“加速数据库恢复”选项。
最后修改时间:2019-10-15 11:28:27
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。