[기술 면접] 7. DB에서 DeadLock(데드락)은 무엇을 의미하나요?

DB에서 DeadLock(데드락)은 무엇을 의미하나요?

저번 시간에 이어, 이번엔 DB에서 DeadLock(데드락)이 무엇을 의미하는지 알아보도록 하겠습니다. 운영체제 카테고리의 Deadlock을 보고 오셨다면, 익숙한 내용일 것으로 생각됩니다.

DB에서 DeadLock(데드락)은 무엇을 의미하나요?



Q: DB에서 DeadLock(데드락)은 무엇을 의미하나요?

여러 Transaction들이 각각 자신의 데이터에 대하여 lock을 획득한 상태에서 상대방 데이터에 접근하고자 대기를 할 때 교차 대기를 하게 되며 서로 영원히 기다리는 상태를 말합니다.



Q: DB의 DeadLock을 해결하려면 어떻게 해야하나요?

3가지 해결 방법이 있습니다.

  • 예방 기법: 각 transaction이 실행되기 전에 필요한 데이터를 모두 Locking 합니다. 하지만 Locking해줘야 하는 데이터가 많다면, 사실상 모든 데이터를 전부 Locking하게 되어 transaction의 병행성을 보장하지 못할 수 있습니다.
  • 회피 기법: 자원을 할당할 때 time stamp를 사용하여 deadlock을 회피합니다.
  • 탐지/회복 기법: transaction이 실행되기 전엔 아무런 검사를 하지 않고, deadlock이 발생하면 이를 감지하고 회복시키는 방법입니다.


마치며

이번 시간에는 DB에서 DeadLock(데드락)이 무엇을 의미하는지와 그에 대한 해결방법을 간단하게 알아보았습니다.

다음 시간에는, Index에 대해 알아보도록 하겠습니다.

DB에서 DeadLock(데드락)은 무엇을 의미하나요?

Leave a Comment