动态锁定

使用低级锁(如行锁)可以降低两个事务同时在相同数据块上请求锁的可能性,从而提高并发性。 使用低级锁还会增加锁的数量以及管理锁所需的资源。 使用高级表锁或页锁可以减少开销,但代价是降低了并发性。

显示成本与粒度的关系图

MicrosoftSQL Server 数据库引擎使用动态锁定策略确定最经济的锁。 执行查询时,数据库引擎会根据架构和查询的特点自动决定最合适的锁。 例如,为了缩减锁定的开销,优化器可能在执行索引扫描时在索引中选择页级锁。

动态锁定具有下列优点:

  • 简化数据库管理。 数据库管理员不必调整锁升级阈值。

  • 提高性能。 数据库引擎通过使用适合任务的锁使系统开销减至最小。

  • 应用程序开发人员可以集中精力进行开发。 数据库引擎将自动调整锁定。

在 SQL Server 2008 中,锁升级的行为已发生改变,其中引入了 LOCK_ESCALATION 选项。 有关详细信息,请参阅 ALTER TABLE 的 LOCK_ESCALATION 选项。