⼀致性
事务在完成时,必须使所有的数据都保持⼀致状态。 在相关数据库中,所有规则都必须应⽤于事
务的修改,以保持所有数据的完整性。 事务结束时,所有的内部数据结构(如 B 树索引或双向链
接列表)都必须是正确的。
备注
SQL Server 文档在提到索引时⼀般使⽤ B 树这个术语。 在⾏存储索引中,SQL Server 实现了 B+
树。 这不适⽤于列存储索引或内存中数据存储。 有关详细信息,请参阅 SQL Server 以及 Azure
SQL 索引体系结构和设计指南 。
隔离
由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。 事务识别数据时数据所处的状
态,要么是另⼀并发事务修改它之前的状态,要么是第⼆个事务修改它之后的状态,事务不会识
别中间状态的数据。 这称为可串⾏性,因为它能够重新装载起始数据,并且重播⼀系列事务,以
使数据结束时的状态与原始事务执⾏的状态相同。
持续性
完成完全持久的事务之后,它的影响将永久存在于系统中。 即使系统发⽣故障,修改也会保留。
SQL Server 2014 (12.x) 及更⾼版本启⽤延迟的持久事务。 提交延迟的持久事务后,该事务⽇志记
录将保留在磁盘上。 有关延迟事务持续性的详细信息,请参阅文章 控制事务持续性 。
SQL 程序员要负责启动和结束事务,同时强制保持数据的逻辑⼀致性。 程序员必须定义数据修改
的顺序,使数据相对于其组织的业务规则保持⼀致。 程序员将这些修改语句包括到⼀个事务中,
使 SQL Server 数据库引擎能够强制该事务的物理完整性。
企业数据库系统(如 SQL Server 数据库引擎的实例)有责任提供⼀种机制,保证每个事务的物理
完整性。 SQL Server 数据库引擎提供了:
锁定设备,使事务保持隔离。
通过记录设备,保证事务持久性。 对于完全持久的事务,在其提交之前,⽇志记录将强制写
入磁盘。 因此,即使服务器硬件、操作系统或 SQL Server 数据库引擎的实例⾃⾝出现故障,
该实例也可以在重新启动时使⽤事务⽇志,将所有未完成的事务⾃动地回滚到系统出现故障
的点。 提交延迟的持久事务后,该事务⽇志记录将强制写入磁盘。 如果在⽇志记录强制写
入磁盘前系统出现故障,此类事务可能会丢失。 有关延迟事务持续性的详细信息,请参阅文
章 控制事务持续性 。
事务管理特性,强制保持事务的原⼦性和⼀致性。 事务启动之后,就必须成功完成(提
交),否则 SQL Server 数据库引擎将撤消该事务启动之后对数据所做的所有修改。 此操作称
为回滚事务,因为它将数据恢复到那些更改发⽣前的状态。
控制事务
应⽤程序主要通过指定事务启动和结束的时间来控制事务。 可以使⽤ Transact-SQL 语句或数据库
应⽤程序编程接⼝ (API) 函数来指定这些时间。 系统还必须能够正确处理那些在事务完成之前便
终⽌事务的错误。 有关详细信息,请参阅 事务 、 在 ODBC 中执⾏事务 以及 SQL Server Native
Client 中的事务 。
评论