default_transaction_isolation
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | “ read committed ” | user | enum |
| 15 | “ read committed ” | user | enum |
| 16 | “ read committed ” | user | enum |
| 17 | “ read committed ” | user | enum |
| 18 | “ read committed ” | user | enum |
| 19 | “ read committed ” | user | enum |
새 transaction의 기본 isolation level을 정한다. 기본값은 read committed다.
SQL transaction의 isolation level은 read uncommitted, read committed, repeatable read, serializable 네 가지다. read committed는 각 문장이 시작되는 시점까지 commit된 데이터만 보는 수준으로, 대부분의 워크로드에서 무난한 기본값이다. repeatable read는 transaction 시작 시점의 snapshot을 끝까지 유지해 transaction 내내 일관된 데이터를 보고, serializable은 여기에 더해 transaction들이 순차 실행된 것과 동일한 결과를 보장하는 대신 serialization failure 시 재시도가 필요하다. 참고로 PostgreSQL에서 read uncommitted는 read committed와 동일하게 동작한다 — dirty read는 어떤 경우에도 일어나지 않는다.
개별 transaction의 level은 SET TRANSACTION으로 바꿀 수 있고, 이 파라미터는 그 기본값만 정한다.
운영 노트: 전역 기본값을 repeatable read 이상으로 올리면 모든 transaction이 snapshot을 길게 유지하고 serialization failure 재시도 부담이 생긴다. 강한 isolation이 필요한 transaction에서만
BEGIN ISOLATION LEVEL ...로 명시하는 편이 일반적이다.출처: PostgreSQL 18 문서