Skip to content

Latest commit

 

History

History
56 lines (45 loc) · 2.08 KB

File metadata and controls

56 lines (45 loc) · 2.08 KB

31. lock 없이 데이터베이스의 데이터를 읽거나, 업데이트할 수 있나요? 어떤 방법이 있죠?

핵심 답변

키워드 : MVCC, 다중 버전 동시성 제어

MVCC를 활용하는 방법이 있습니다. MVCC는 Multi-Version Concurrency Control라는 의미로, 다중 접근에 대한 동시성을 제어합니다.

MVCC 모델에서 데이터에 접근하는 사용자는 접근한 시점에서 데이터베이스의 Snapshot을 읽습니다.

MVCC의 접근 방식은 잠금을 필요로 하지 않기 때문에 일반적인 RDBMS보다 매우 빠르게 작동합니다.

또한 데이터를 읽기 시작할 때, 다른 사람이 그 데이터를 삭제하거나 수정하더라도 영향을 받지 않고 데이터를 사용할 수 있습니다.

대신 사용하지 않는 데이터가 계속 쌓이게 되므로 데이터를 정리하는 시스템이 필요합니다.


추가 학습


트랜잭션 격리수준(Isolation Level)

키워드 : 트랜잭션 격리수준(Isolation Level)

  • Read Uncommitted

    • 다른 트랜잭션에서 커밋되지 않은 내용에 접근 가능 (Dirty Read)
    • 락 발생 X
  • Read Committed

    • 커밋된 내용만 접근 가능
    • 한 트랜잭션 내에서 검색 결과가 비일관적인 현상 발생 (Nonrepeatable read)
    • 락 발생 X
  • Repeatable Read

    • 커밋이 완료된 데이터만 읽을 수 있으며, 트랜잭션 범위 내에서 조회한 내용이 항상 동일함을 보장
    • 일정범위의 레코드를 두번 이상 읽을 때, 첫 번재 쿼리에서 없던 유령 레코드가 두번째 쿼리에서 나타나는 현상을 Phantom read 락 발생
  • Serializable

    • 한 트랜잭션에서 사용하는 데이터는 다른 트랜잭션이 접근 불가능
    • 락 발생

참고