SQL 2014新特性- Delayed durability
时间:2022-03-10 17:35
原文:SQL 2014新特性- Delayed durability
ACID 是数据库的基本属性。其中的D是指"持久性":只要事务已经提交,对应的数据修改就会被保存下来,即使出现断电等情况,当系统重启后之前已经提交的数据依然能够反映到数据库中。
那么D特性是如何在SQL Server中实现的呢?SQL Server使用write-ahead logging的方式,保证日志记录会先于数据记录固化到磁盘中。当事务提交后,只有当日志记录固化到磁盘时,才会向客户端返回提交成功的消息,至于相应的数据记录,会通过异步的方式后续写入到磁盘中。如果在此期间发生断电等故障,那么就会出现以下两种情况:
-
日志已经写入到磁盘(committed),但数据没有写入:
下面比较一下使用delayed durability的情况
declare @N int=0
while @n<1000
begin
begin tran
注意事项
- 当系统不忙时,也会主动将delayed durability的日志记录固化到磁盘。但目前不知道如何判断"不忙"这个标准。
- checkpoint不会将delayed durability的日志记录固化到磁盘。
- SQL Server正常关闭不会将delayed durability的日志记录固化到磁盘,也就说正常关闭也可能会导致数据丢失,建议之前先执行sp_flush_log。
SQL 2014新特性- Delayed durability,布布扣,bubuko.com