我正在压力测试我的网站。它使用实体框架6。
我有10根线。这就是他们正在做的事情:
它在2分钟内崩溃,出现数据库死锁异常(在读取时一致!)。
我尝试过在事务中包装步骤2-4,但这并没有帮助。
我已经读过,从EF6开始,ExecuteSqlCommand默认包装在事务中(https://msdn.microsoft.com/en-us/data/dn456843.aspx)。我怎么才能停止这种行为?
我甚至不明白为什么我的事务会陷入僵局,它们是读/写独立行的。
是否有数据库设置可以在某个地方翻转,以增加挂起事务队列的大小?
发布于 2015-02-18 02:50:38
我怀疑EF和这件事有什么关系。即使您正在读/写独立的行,锁也可以升级和锁定页面。如果您不小心数据库设计,以及您如何执行读和写(顺序是重要的),您可以死锁,使用EF或任何其他访问技术。
发布于 2015-02-18 02:52:02
所使用的事务类型是什么?.NET的TransactionScope默认为SERIALIZABLE,至少在我的应用程序中是这样的。在我的经验中,SERIALIZABLE事务死锁比其他类型(如ReadCommitted )容易得多。
https://stackoverflow.com/questions/28575105
复制相似问题