Вокруг этого есть и другие похожие темы, но ничего, что явно не соответствует тому, что я испытываю. По сути, я использую NHibernate вместе с моделью сеанса на запрос, которая открывает соединение с MySQL и выполняет одну транзакцию на время запроса. В последнее время я заметил случаи (это не всегда повторяется), где два одновременных запроса для одного и того же запроса, которые в значительной степени выполняют загрузку вставок (а также один оператор выбора в одной из таблиц вставки) в несколько связанных таблиц, но не много еще.
Что странно, так это то, что обе транзакции выполняются и фиксируются без ошибок, однако только одна из транзакций фактически вставила строки. Другой ведет себя так, как если бы он был откатан, за исключением того, что никакие исключения не генерируются ни в какой момент, поэтому невозможно сказать это из .Net.
Я использую MySql 5.6 (в основном последний, хотя я сейчас дома, поэтому не могу получить точную версию), использую InnoDB с уровнем изоляции транзакций с повторяемым чтением. Я даже поднял уровень изоляции до сериализуемого, чтобы увидеть, поможет ли это в этом вопросе, но все же получил ту же проблему. Я подозреваю, что добавление FOR UPDATE после оператора select может помочь с дополнительной блокировкой таблицы, но с учетом NHibernate это не так просто добавить.
Полагаю, мой вопрос: кто-нибудь сталкивался с этим раньше? Кроме того, если нет, что доступно в MySql для отладки этих проблем?
Спасибо,
Mark