티스토리 뷰

0. Concurrency Control

:: 여러 트랜잭션이 동시에 실행될 때, DB의 일관성과 무결성을 유지하는 기술

:: 여러 작업이 동시에 DB에 접근 및 수정을 할 때, 트랜잭션 간에 출돌이나 데이터의 불일치를 방지

:: Lock을 걸어 각 작업에 대한 격리 수준을 결정(Pessimistic / Optimistic Lock)


0.1 목표

항목  내용
1. 상호 배제 (Mutual Exclusion) 여러 트랜잭션이 동시에 실행 시, 같은 데이터에 대한 접근을 제한(배제)
2. 회복 가능성 (Recoverability) 트랜잭션이 실패 / 중단 시, 데이터베이스가 일관성 있는 상태로 회복 / RollBack
3. 일관성 (Consistency) 트랜잭션들이 실행되는 동안 데이터가 일관된 상태를 보장
4. 격리성 (Isolation) 트랜잭션들이 서로 독립적으로 실행되도록 하여, 중간 결과가 다른 트랜잭션에 영향 X

 


0.2 동시성 문제 

:: 여러 트랜잭션의 접근 시, 발생하는 문제

항목 내용 
1.더티 리드 (Dirty Read) :: 트랜잭션의 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 경우
2. 논리적 일관성 문제
(Non-Serializable)
:: 트랜잭션의 병렬 실행 시, DB 상태가 논리적 일관성을 잃은 경우(데이터의 시작 값 != 끝 값)
:: 데이터에 대한 반복 조회 중, 중간에 다른 트랜잭션에 의해 값이 바뀌었을 경우
3. 팬텀 리드 (Phantom Read) :: 데이터 반복 조회 중, 다른 트랜잭션에 의해 데이터의  Insert or Delete 시 발생
4. 라이브 락 (Live Lock)
  / 데드 락 (Deadlock)
- 데드락 :: 서로 락의 일부를 가져 교착상태에 빠짐
- 라이브락 :: 트랜잭션의 반복적인 작업 취소 / 재시도로 인해 작업완료 X

1. 동시성 제어 기법(Pessimistic / Optimistic Lock)

1.0 격리 수준(Isolation Levels)

:: Transaction 간 격리 정도에 따라, 트랜잭션의 격리 수준을 결정

:: 각 작업은 해당 레벨에 따라 독립 실행 또는 동시 실행을 결정

:: 동시성을 늘려 작업 처리 시간을 최적화하기 위해 

수준 내용
lv0. Read Uncommitted - Dirty Read
:: 가장 낮은 격리 수준 -> 가장 빠른 읽기
:: 트랜잭션이 커밋되지 않은(ROLLBACK, COMMIT 여부에 상관없는)데이터의 읽기 가능
lv1. Read Committed - Non-Repeatable Read
- 해당 레벨부터 MVCC 적용 
:: 커밋된 데이터만 읽기 가능
:: 더티 리드 X, But 논리적 일관성 문제 발생 가능
lv2. Repeatable Read - Phantom Read - MVCC 적용 시, 예방 가능. 
:: 트랜잭션 내에서 읽은 데이터는 다른 트랜잭션에 의해 변경되지 않도록 보장
:: But, 데이터 자체에 대한 추가 / 삭제는 보장 X
lv3. Serializable :: 가장 높은 격리 수준
:: 트랜잭션이 완전히 순차적으로 실행 -> 성능이 제일 느림 

 

  • MVCC(Multiversion Concurrency Control)
    :: Update로 값 수정 시, Undo 영역(로그)이 아닌 실제 레코드(저장소) 변경
    :: Undo 영역에 백업된 데이터는 주기적으로 Garbage Collection

    • MySQL(InnoDB)의 경우
      :: Commit 되지 않았어도, 일단 실행된 모든 쿼리를 DB (실제 레코드) 에 적용
      :: Consistent Non-locking Read / Consistent Read : 현재 DB(레코드) 가 아닌 Undo영역의 Snapshot 을 읽는것

    • PostgresQL은 살짝 엇나가서 반대로? 

 


2025.03.11 - [정리용/DB] - [DB 기초] 3-1. DB 동시성 제어 기법(Pessimistic / Optimistic Lock)

 

[DB 기초] 3-1. DB 동시성 제어 기법(Pessimistic / Optimistic Lock)

1. Pessimistic Lock (비관적 잠금)항목내용특징- Pessimistic Concurrency Control(PCC)- 트랜잭션이 데이터를 수정할 때, 다른 트랜잭션의 접근을 미리 차단하여 충돌을 방지- DB Built-In Lock :: DB내 내장된 락 메

hee-ya07.tistory.com

 

 


참고

ASAC 수업자료

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함