我的asp.net WEB API应用程序处理请求。每个请求都可以对数据库进行多次调用。 同一用户可以呼叫来自不同IP地址的请求。MS SQL Server - 使用事务处理雾化操作
我需要开发针对用户的请求等待链,使同一个用户的请求将等待前一个请求完成。
以前我通过运行在一个事务范围的要求使得它: 隔离级别= ReadCommited为了锁定该行以DB更新用户排记录 第一个请求,让其他请求应该在这里等着,而先前的事务中运行。
i之后由具有多个不同的用户,在同一时间不相同的负荷试验中,我想通了,它们在某种程度上dealocking海誓山盟:
事务(进程ID 119)中的死锁的锁资源与另一个进程并被选为死锁受害者。重新运行交易。
我的问题是:这将是我的情况,制定一个用户级等待链的应用要求最好的方法?
预先感谢您!
你想放弃你的方法。相反,你应该修复bug(死锁)。另一方面,使用数据库锁作为队列不是完全可扩展的。同时会有多少个排队请求? – usr