격리 수준

PostgreSQL에서의 트랜잭션과 오류 처리

Jason Myers

Instructor

동시성

  • 여러 작업을 동시에 조정합니다.
  • 데이터베이스에서 고유한 문제가 발생합니다.
  • 결과를 이해하기 쉽게 하는 규칙(격리 수준)을 사용합니다.
PostgreSQL에서의 트랜잭션과 오류 처리

더티 리드

더티 리드

PostgreSQL에서의 트랜잭션과 오류 처리

비반복 읽기

비반복 읽기

PostgreSQL에서의 트랜잭션과 오류 처리

팬텀 리드

팬텀 리드

PostgreSQL에서의 트랜잭션과 오류 처리

직렬화 이상

직렬화 이상

PostgreSQL에서의 트랜잭션과 오류 처리

격리 수준

격리 수준 더티 리드 비반복 읽기 팬텀 리드 직렬화 이상
Read Uncommitted 보호됨 (PostgreSQL) 취약 취약 취약
Read Committed 보호됨 취약 취약 취약
Repeatable Read 보호됨 보호됨 보호됨 (PostgreSQL) 취약
Serializable 보호됨 보호됨 보호됨 보호됨
PostgreSQL에서의 트랜잭션과 오류 처리

격리 수준의 영향

START TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 
SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';

-- Cookie 6 has been added in an external transaction.

SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';
COMMIT;

실행 결과

  • 첫 번째 SELECT 결과: 5
  • 두 번째 SELECT 결과: 6
PostgreSQL에서의 트랜잭션과 오류 처리

격리 수준의 영향

START TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';

-- Cookie 6 has been added in an external transaction.

SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';
COMMIT;

실행 결과

  • 첫 번째 SELECT 결과: 5
  • 두 번째 SELECT 결과: 5
PostgreSQL에서의 트랜잭션과 오류 처리

연습해 봅시다!

PostgreSQL에서의 트랜잭션과 오류 처리

Preparing Video For Download...