Я бы попытался откатить некоторую работу, выполненную заданием 1, в качестве эксперимента, чтобы подтвердить, что все, что вы считаете включенным в транзакцию, фактически удаляется при откате. Я, как и вы, подозревал бы, что вы никогда не сможете прочитать данные из другой транзакции, которые будут удалены при откате при использовании READ COMMITTED. Тот факт, что вы можете читать строки, предполагает, что некоторые из них могут входить вне контекста транзакции.
Моя следующая мысль - пересмотреть значение READ COMMITTED. Этот уровень изоляции предположительно гарантирует, что данные, которые вы читаете, был зафиксирован одной транзакцией, но не обязательно гарантирует, что они все еще не могут измениться в результате другой. Сравните это с REPEATABLE READ, где все данные остаются заблокированными до конца транзакции, или с SERIALIZABLE, который пытается вести себя так, как будто все транзакции были выполнены последовательно. Я подозреваю, что если вы измените блокировку на SERIALIZABLE (наиболее ограничивающую), эта конкретная проблема не возникнет, но это может быть излишним.
После рассмотрения значения READ COMMITTED по сравнению с другими уровнями изоляции, я подозреваю, что поведение, которое вы видите, является естественным на этом уровне изоляции, потому что вставленные вами строки на самом деле будут строками, которые все еще будут присутствовать на конец сделки. Я думаю, что READ COMMITTED не предназначен для того, чтобы запрос возвращал полный набор строк (что потребовало бы блокировки диапазона, как наложено SERIALIZABLE), но только для того, чтобы отдельные строки, которые вы читаете, были полностью вставлены (так что вы ' не читаю частичную строку). Я могу ошибаться, но, учитывая поведение, которое вы описываете, это мое подозрение. Если вам нужно убедиться, что весь набор строк завершен, я думаю, что вам нужна SERIALIZABLE изоляция.
Какая транзакция должна быть SERIALIZABLE? Очевидно, что если они оба SERIALIZABLE, это должно работать. Но может быть возможно сделать только один из них Сериализуемым и все же получить правильное поведение. Мои умственные способности на данный момент не соответствуют задаче определения того, что действительно должно быть СЕРИАЛИЗИРУЕМЫМ, но, возможно, некоторые комментарии других прольют дополнительный свет.