가상의 보고 화면이 먼저 조건에 맞는 주문 12건을 셉니다. 다른 세션이 조건에 맞는 주문을 하나 추가하고 커밋합니다. 그다음 화면이 Read Committed에서 첫 페이지를 조회합니다.
PostgreSQL 18에서는 각 SELECT가 자기 문장 시작 시점의 스냅샷을 사용하므로, 전체 개수는 이전 집합을 나타내면서 페이지에는 방금 커밋된 주문이 포함될 수 있습니다. 두 SELECT를 한 트랜잭션에 넣는 것만으로는 Read Committed에서 같은 스냅샷을 쓰게 되지 않습니다.
원하는 규칙은 화면에 표시할 때 더 새로운 주문이 있더라도 개수와 행들이 같은 보고 내용을 나타내는 것입니다. 두 조회를 하나의 Repeatable Read 트랜잭션으로 묶으면 이 규칙이 명확해집니까? 아니면 보고 내용을 하나의 결합된 쿼리로 가져오는 편이 낫습니까? 어느 쪽이든 화면에는 두 값을 함께 반영하겠습니다.