首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表锁升级-性能问题

表锁升级-性能问题
EN

Database Administration用户
提问于 2021-10-23 18:01:14
回答 1查看 199关注 0票数 0

我对表锁自动升级有几个问题,请确认或反驳:

  1. 索引扫描操作符在查询中会导致表锁升级吗?是否总是(小桌子)?
  2. 当共享锁升级到表级别时,它会阻止小的更新和删除吗?插入也行吗?
  3. 是否有可能获得表lock_escalation事件的计数,按登录名进行分组,然后按表分组?例如:

login1 - table1 - 11 login1 - table2 -5 login2 - table1 -29 等。

如果我没有弄错的话,扩展事件似乎只允许一个级别的分组。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-10-24 02:27:53

首先,我要说:只有当单个表上的锁数达到5,000,或者使用了40%的锁内存时,才会使用表锁。见文件获取更多详细信息。

考虑到这一点:

  1. 索引扫描不一定采用表锁,只有在达到阈值时才会这样做。如果扫描中有行目标(例如TOPEXISTS),即使在大型表上也不会发生这种情况。表的总大小不重要,只有实际读取的行数。
  2. 表级别上的S锁与IXX锁不兼容,DML会尝试其中一种锁,如UPDATEDELETE。但是,仍然可以使用U锁,这意味着DML仍然可以找到要修改的行,但必须等待实际尝试修改。
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/301565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档