如何在不使用快照隔离的情况下解决S-IX死锁问题?

时间:2016-10-19 04:31:10

标签: sql sql-server deadlock database-deadlocks

好的,我遇到了一个奇怪的问题:我有两个服务器端api,一个是从A表中选择数据;另一个是将新记录插入B表,其中部分数据和PK来自第一个。通过常规行动,彼此不应该有任何问题。

不知何故,我在我的SQL监视器上检测到一个在不到0.005秒时调用我的select和insert函数的人,这导致了S-IX死锁。所以我搜索了互联网并找到了一个解决方案,告诉我启用快照隔离。但是我在我的测试数据库(它的总大小约为223MB)上尝试了它,Alter Database命令在执行1小时后没有显示任何结束的情况,所以在具有如此长的停机时间的生产数据库上执行它是不能容忍的(其数据大小大于Test 1)。

所以我的问题是:有没有人知道解决S-IX死锁的其他方法?(不降低吞吐量。)

P.S。:我的数据库是SQL Server 2008

0 个答案:

没有答案