Рассмотрим эти две транзакции:
INSERT INTO foo VALUES (1, 2, 'bar');
INSERT INTO foo VALUES (1, 4, 'xyz');
COMMIT;
и
SELECT * FROM foo;
Есть ли момент времени, когда SELECT будет видеть только одну строку, вставленную из первой транзакции?
До сих пор я не смог найти никаких доказательств того, что данные видны только после успешного завершения COMMIT. Когда Oracle записывает журнал Redo во время коммита, он записывает его последовательно, я прав? Таким образом, есть точка, в которой написана первая строка, но не вторая. И поскольку авторы не блокируют читателей в Oracle, если выбор попадает именно в это окно, он видит только одну строку. Или есть какой-то другой механизм блокировки?