锁粒度和层次结构 sql Server 2008 R2 其他版本 0(共 1)对本文的评价是有帮助 - 评价此主题
Microsoft sql Server 数据库引擎具有多粒度锁定,允许一个事务锁定不同类型的资源。 为了尽量减少锁定的开销,数据库引擎自动将资源锁定在适合任务的级别。 锁定在较小的粒度(例如行)可以提高并发度,但开销较高,因为如果锁定了许多行,则需要持有更多的锁。 锁定在较大的粒度(例如表)会降低了并发度,因为锁定整个表限制了其他事务对表中任意部分的访问。 但其开销较低,因为需要维护的锁较少。
数据库引擎通常必须获取多粒度级别上的锁才能完整地保护资源。 这组多粒度级别上的锁称为锁层次结构。 例如,为了完整地保护对索引的读取,数据库引擎实例可能必须获取行上的共享锁以及页和表上的意向共享锁。
下表列出了数据库引擎可以锁定的资源。
资源 | 说明 |
---|---|
RID | 用于锁定堆中的单个行的行标识符。 |
KEY | 索引中用于保护可序列化事务中的键范围的行锁。 |
PAGE | 数据库中的 8 KB 页,例如数据页或索引页。 |
EXTENT | 一组连续的八页,例如数据页或索引页。 |
HoBT | 堆或 B 树。 用于保护没有聚集索引的表中的 B 树(索引)或堆数据页的锁。 |
table | 包括所有数据和索引的整个表。 |
file | 数据库文件。 |
APPliCATION | 应用程序专用的资源。 |
MetaDATA | 元数据锁。 |
ALLOCATION_UNIT | 分配单元。 |
DATABASE | 整个数据库。 |
注意 |
---|
使用 ALTER TABLE 的 LOCK_ESCALATION 选项会对 HoBT 和 table 锁带来影响。 |
以上是内存溢出为你收集整理的SQLSERVER 锁粒度和层次结构全部内容,希望文章能够帮你解决SQLSERVER 锁粒度和层次结构所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)