인프런 커뮤니티 질문&답변

사과일광욕님의 프로필 이미지
사과일광욕

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스

대기와 락

락과 트랜잭션 격리수준 차이는 뭔가여?

작성

·

210

0

db커넥션 여러개가 접근해야 할때

 

락을 사용해야 하나여

아니면 트랜잭션 격리수준의 높은레벨을 사용해야 할까요

 

둘의 차이를 모르겠습니다 ㅠ

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

락(Lock)과 트랜잭션 격리 수준(Transaction Isolation Level)은 데이터베이스의 동시성 제어를 위해 사용되는 두 가지 다른 메커니즘입니다.

락은 특정 데이터베이스의 자원 또는 데이터에 대한 접근을 제어하여 동시성 문제를 방지하는 방법입니다. 즉, 어떤 트랜잭션이 특정 데이터를 사용하고 있을 때, 다른 트랜잭션이 그 데이터를 변경하거나 읽지 못하도록 제한하는 것입니다. 락에는 여러 유형이 있으며, 각각 사용 목적과 상황에 따라 다릅니다.

트랜잭션 격리 수준은 트랜잭션이 다른 트랜잭션에서 변경하거나 생성한 데이터를 ‘얼마나 볼 수 있는지’ 결정하는 속성입니다. 격리 수준이 낮으면 동시성은 높아지지만, 데이터베이스에서 발생할 수 있는 문제(더티 리드, 논리적 일관성 없는 리드 등)의 위험이 높아집니다. 반면, 격리 수준을 높이면 이러한 문제의 위험을 줄일 수 있지만, 동시성이 낮아질 수 있습니다.

따라서, 여러 db커넥션이 동시에 접근해야 할 때 락과 트랜잭션 격리 수준 중 어떤 것을 사용할지 결정하는 것은, 동시성과 데이터 일관성 사이의 트레이드오프를 이해하고, 애플리케이션의 요구 사항에 가장 적합한 방법을 선택하는 것에 달려 있습니다.

사과일광욕님의 경우, 락을 사용하면 특정 오퍼레이션을 보호할 수 있고, 필요한 경우에만 특정 데이터에 대한 접근을 제한할 수 있습니다. 반면, 트랜잭션 격리 수준을 조정하여 더 넓은 범위에서의 데이터 일관성을 보장하고 동시성을 제어할 수도 있습니다. 이 두 기법은 상황에 따라 서로 보완적으로 사용될 수 있습니다.

사과일광욕님의 프로필 이미지
사과일광욕

작성한 질문수

질문하기