Sql 合并锁定整个目标 Table
Sql Merge Locking the Entire Target Table
我在 table 中使用 SQL 合并进行 CRUD 操作,该 table 拥有超过 300 万条记录,并且由于合并锁定 table 这会导致其他超时错误在生产环境中选择和更新。
网站在给定时间被多个用户访问,同一个 table 可以由不同的用户组同时更新。
所以根据我的情况,使用 SQL 合并是有效的还是我必须使用 INSERT/UPDATE/DELETE 语句?
是否有任何方法可以通过仅锁定数据记录而不是锁定整个 table 来改进合并?
这是由 sql 服务器中非常愚蠢的默认设置引起的。
出于某种原因 sql 服务器阻止了 table 上的所有读者,而作者正在使用 table。您可以像这样纠正微软的疏忽:
ALTER DATABASE yourdatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE yourdatabase SET READ_COMMITTED_SNAPSHOT ON with NO_WAIT
ALTER DATABASE yourdatabase SET MULTI_USER
我在 table 中使用 SQL 合并进行 CRUD 操作,该 table 拥有超过 300 万条记录,并且由于合并锁定 table 这会导致其他超时错误在生产环境中选择和更新。
网站在给定时间被多个用户访问,同一个 table 可以由不同的用户组同时更新。
所以根据我的情况,使用 SQL 合并是有效的还是我必须使用 INSERT/UPDATE/DELETE 语句?
是否有任何方法可以通过仅锁定数据记录而不是锁定整个 table 来改进合并?
这是由 sql 服务器中非常愚蠢的默认设置引起的。
出于某种原因 sql 服务器阻止了 table 上的所有读者,而作者正在使用 table。您可以像这样纠正微软的疏忽:
ALTER DATABASE yourdatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE yourdatabase SET READ_COMMITTED_SNAPSHOT ON with NO_WAIT
ALTER DATABASE yourdatabase SET MULTI_USER