围绕这个还有其他类似的话题,但没有任何明显映射到我正在经历的事情。本质上,我使用NHibernate以及每个请求模型的会话,该模型打开与mysql的连接并在请求期间运行单个事务。最近我注意到实例(它并不总是可重复的),其中两个并发请求,对于同一个请求,几乎是对一些相关表的插入(以及其中一个插入表上的一个select语句)的加载,但不是其他很多。
奇怪的是,两个事务都运行并且没有错误地提交,但是只有一个事务实际插入了行。另一个表现就像它被回滚一样,除了在任何点都没有抛出异常,所以不可能从.Net告诉它。
我正在运行MySql 5.6(几乎是最新的,虽然我现在在家里因此无法获得确切的版本),使用具有可重复读取事务隔离级别的InnoDB。我甚至将隔离级别提高到可序列化,看看这是否有助于此事但仍然遇到同样的问题。我怀疑在select语句之后添加FOR UPDATE可能有助于额外的表锁定,但是给定NHibernate这并不是那么容易添加。
我想我的问题是以前有没有人经历过这个?另外,如果没有,MySql中有哪些可用来尝试调试这些问题?
谢谢, 标记