데이터베이스 모델링에서의 병행성 제어 기법
데이터베이스 모델링은 데이터베이스 시스템을 설계할 때 사용되는 중요한 단계입니다. 하지만 여러 사용자가 동시에 데이터베이스에 접근하고 수정하는 상황에서는 병행성 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 병행성 제어 기법을 사용합니다.
교착상태(Deadlock)
교착상태는 두 개 이상의 트랜잭션이 각각 자원을 점유한 상태에서 다른 트랜잭션이 점유한 자원을 기다리며 진행하지 못하는 상태를 말합니다. 이러한 상태에서는 트랜잭션이 영원히 완료되지 못하게 되어 무한 대기 문제가 발생할 수 있습니다.
교착상태를 해결하기 위한 병행성 제어 기법으로는 다음과 같은 방법들이 있습니다.
1. 예방(Prevention)
- 상호배제(Mutual Exclusion): 한 번에 한 개의 트랜잭션만이 자원에 접근할 수 있도록 제한합니다.
- 점유와 대기(Hold and Wait): 트랜잭션이 필요한 모든 자원을 점유하지 않은 상태에서 자원을 요청할 수 없도록 제한합니다.
- 비선점(No Preemption): 한 트랜잭션이 다른 트랜잭션이 점유한 자원을 강제로 빼앗을 수 없도록 제한합니다.
- 순환 대기(Circular Wait): 트랜잭션들이 자원을 순환적으로 기다리지 않도록 제한합니다.
2. 탐지(Detection) 및 회복(Recovery)
- 교착상태를 사전에 예방하지 않고, 교착상태가 발생하면 탐지하여 회복하는 방법입니다. 주기적으로 시스템 상태를 검사하여 교착상태를 탐지하고, 회복시키는 알고리즘을 사용합니다.
격리 수준(Isolation Levels)
병행성 제어는 교착상태뿐만 아니라 데이터의 일관성과 고립성을 보장하기 위해서도 필요합니다. 격리 수준은 데이터베이스에서 한 트랜잭션이 다른 트랜잭션의 작업을 볼 수 있는 정도를 결정하는 것을 말합니다.
가장 낮은 격리 수준인 READ UNCOMMITTED부터 가장 높은 격리 수준인 SERIALIZABLE까지 다양한 격리 수준이 있습니다. 격리 수준은 동시성과 일관성 사이의 trade-off를 고려하여 설정해야 합니다.
요약
데이터베이스 모델링에서의 병행성 제어는 교착상태와 격리 수준을 관리하는 중요한 기법입니다. 이를 통해 데이터베이스 시스템의 안정성과 일관성을 유지할 수 있습니다.
참고문헌:
- 이지훈, “데이터베이스 시스템”, 한빛아카데미, 2014.
- Ramakrishnan, R., & Gehrke, J. (2000). “Database management systems”, WCB/McGraw-Hill.
#데이터베이스모델링 #병행성제어