当我查看加速数据库恢复和读取已提交快照隔离的文档时,似乎加速数据库恢复的所有缺点都与读取已提交快照隔离相同。那么假设我已经启用了读取已提交快照隔离,那么加速数据库恢复的缺点是什么?
我怀疑 Azure 中默认启用加速数据库恢复和读取已提交快照隔离并非巧合。假设是 SQL Server 2019 或 SQL Server 2022。
当我查看加速数据库恢复和读取已提交快照隔离的文档时,似乎加速数据库恢复的所有缺点都与读取已提交快照隔离相同。那么假设我已经启用了读取已提交快照隔离,那么加速数据库恢复的缺点是什么?
我怀疑 Azure 中默认启用加速数据库恢复和读取已提交快照隔离并非巧合。假设是 SQL Server 2019 或 SQL Server 2022。
优点与缺点相反😂
您别无选择,持久版本存储(PVS)必须是 ADR 启用的一部分,因此您的版本存储现在是数据库的一部分,而不是tempdb的一部分。
如果您没有大型版本存储,这可能没问题,如果您有一个大型版本存储,您的数据库大小就会增长。
由于这些都是需要保存的项目,这可能会对日志记录和使用日志的技术产生影响,例如复制、CDC、可用性组、日志传送等,从而导致次要问题。
由于 ADR 使用 PVS,因此需要清理版本,就像tempdb一样,您无法清理所需的版本。这可能会导致清理器落后,PVS 膨胀,最终清理器要么无法跟上进度,要么导致其他问题。
随着时间的推移,清理器得到了增强,SQL Server 2022 比 2019 做得更好。Azure SQL DB 则不同,因为它通常是最新的代码位(以某种形式或方式),但并不能免受这些问题的影响。
ADR 对于大多数工作负载来说都很好;然而,我看到过大量中止事务的工作负载所带来的糟糕的性能和结果。
这最终表现为 PVS 膨胀,并且恢复时间没有那么快。此外,如果尚未被阻止,这可能会导致需要手动运行PVS 清理。对于诸如辅助可读副本和 AG 之类的长时间运行的查询也是如此。
请注意,优化锁定需要 ADR ,目前仅适用于 Azure SQL 数据库和 Fabric,但可以在某个阶段在 SQL Server 上使用。