首页 > 解决方案 > 更新表导致子表上的页级锁定

问题描述

在实时环境中,我们有一个表,我们正试图对其进行非常定期的更新,例如让我们称之为 Employee。但是,当我们更新此表时,我们会在子表上获得页级锁定,例如让我们将此称为 EmployeeAddress。这会导致数据库中的事务死锁/阻塞进程。

该代码是一个非常简单的更新,类似于:update Employee set fieldA = A, fieldB = B ... WHERE employeeId = x,然后有时会导致 EmployeeAddress 上的页面级锁定,从而使其他进程死锁。

我的问题:有没有人见过类似的死锁/页面级锁?我很确定在 EmployeeAddress 表中删除对 EmployeeId 的 fk 约束可以解决这个问题,但是 SQL Server 应该能够在没有这些死锁问题的情况下处理这个 fk 约束吗?

谢谢!

编辑:我忘了补充,我们有一个可能的建议是修改子表的填充因子设置,这是一个合理的选择吗?

标签: sqlsql-server

解决方案


推荐阅读