锁定和行版本控制

当多个用户同时访问数据时,SQL Server 数据库引擎使用以下机制确保事务的完整性和保持数据库的一致性:

  • 锁定

    每个事务对所依赖的资源(如行、页或表)请求不同类型的锁。锁可以阻止其他事务以某种可能会导致事务请求锁出错的方式修改资源。当事务不再依赖锁定的资源时,它将释放锁。

  • 行版本控制

    当启用了基于行版本控制的隔离级别时,数据库引擎将维护修改的每一行的版本。应用程序可以指定事务使用行版本查看事务或查询开始时存在的数据,而不是使用锁保护所有读取。通过使用行版本控制,读取操作阻止其他事务的可能性将大大降低。

锁定和行版本控制可以防止用户读取未提交的数据,还可以防止多个用户尝试同时更改同一数据。如果不进行锁定或行版本控制,对数据执行的查询可能会返回数据库中尚未提交的数据,从而产生意外的结果。

应用程序可以选择事务隔离级别,为事务定义保护级别,以防被其他事务所修改。可以为各个 Transact-SQL 语句指定表级别的提示,进一步定制行为以满足应用程序的要求。

用户可以通过启用或禁用数据库选项来控制是否实现行版本控制。有关详细信息,请参阅启用基于行版本控制的隔离级别使用基于行版本控制的隔离级别