我在ASP.NET应用程序中遇到了这个过程:
我的问题是,如果我有2个用户启动进程,第二个必须等待前一个完成(因为插入似乎在表上放置了一个独占锁),我的应用程序有时会超时(并且用户不乐意等待:))。
我正在寻找一种方法,让除了最后一个之外没有交互的用户可以并行执行所有操作:编写结果。我认为阻止我的是“LoadData”表中的插入/删除。 我检查了其他事务隔离级别,但似乎没有任何东西可以帮助我。
什么是完美的将是能够删除“LoadData”表上的独占锁(是否可以强制SqlServer只锁定行而不是表?)插入完成后,但没有结束事务
有什么建议吗?
答案 0 :(得分:1)
事务应该包括小而快速执行的SQL /代码。它们具有在不同平台上以不同方式实现的趋势。它们将锁定表,然后随着修改的增加扩展锁定,从而锁定其他用户查询或更新相同的行/页/表。
为什么不忘记交易,以另一种方式处理处理错误?您的数据完整性是否真的受到交易的保护,或者您可以不使用它吗?
答案 1 :(得分:1)
在线上书籍中查找SET TRANSACTION ISOLATION LEVEL READ COMMITTED SNAPSHOT。
答案 2 :(得分:1)
如果您确定除了最后一部分之外没有cioncurrent操作的问题,为什么不在那些最后一个语句之前启动事务,无论它们是哪个DO需要隔离),并在它们成功后立即提交..然后所有前期阅读操作都不会互相阻塞......