我一直在使用 SharpArchitecture 和 NHibernate 来构建我的网站,它可以有很多用户。我的表在数据库设置中使用主键设置为 IDENTITY(1,1)。最近几天,我注意到基于日志文件发生的一堆死锁问题,如下所示:
System.Data.SqlClient.SqlException: Transaction (Process ID 55) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
我有时会收到此错误,这可能与此有关:
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
在我的 web.config 中,我包含了这一行来设置 db 隔离属性:
<property name="connection.isolation">ReadUncommitted</property>
根据我通过搜索发现的内容,自动递增的 ID 正在锁定表,即使我已经 ReadUncommitted。话虽如此:
- 我对这个结论正确吗?
- 如果是这样,我假设如果我使用 HiLo 或 GuidComb 之类的东西生成 ID,它会解决问题吗?
谢谢!