데이터베이스 아키텍처를 분석하고 학습하다 보면 항상 데이터베이스 내부 구조에 대한 호기심이 생기게 마련이다. 이와 같은 데이터베이스 내부 아키텍처는 실제 업무를 수행하는 데 그다지 큰 도움이 되지 않는 다고 생각할 수 있다.
하지만 데이터베이스 내부 아키텍처를 정확히 이해한다면 데이터베이스에 문제가 발생하는 경우 정확하고 논리적인 분석이 가능하게 된다. 그렇기 때문에 데이터베이스를 확실하게 분석하기 위해서는 데이터베이스 Internal은 반드시 이해하는 것이 유리하다.
데이터베이스를 운영하다 보면 자주 발생하는 것이 LOCK이다. 이와같은 LOCK에 의해 시스템 장애가 발생하기도 한다. 그렇기 때문에 LOCK에 대한 아키텍처는 매우 중요하다. LOCK은 Latch와 Enqueue로 구성되며 이번 시간에는 먼저 Enqueue에 대해 확인해 보자.
[그림 1]은 Enqueue 아키텍처의 전체적인 절차를 표현하고 있다. 그럼 이 그림에서 사용되는 용어들에 대해 확인해 보자.
Enqueue Structure는 이와 같은 구성요소를 가지게 된다. 이런 Enqueue Structure에서 작업에 필요한 Enqueue를 획득하는 방법을 확인해 보자.
위와 같은 형태로 Enqueue는 획득되고 관리된다.
[그림 2]에서 보는 것처럼 Enqueue Mode는 여섯 가지가 존재한다.
해당 여섯 가지의 모드는 클라이언트에서 SQL 등을 수행하게 되면 해당 SQL을 수행하기 위한 Enqueue가 State Object에 기록되고 해당 State Object에서 필요한 Type의 Enqueue를 요청하게 된다. 이와 같이 수행되는 것이 Enqueue Mode이다.
이와 같은 Enqueue Mode에 의해 Enqueue Compatible 표를 확인해 보면 V 마크가 되어있는 경우에는 공유가 가능한 Enqueue는 위에서 확인한 것과 같이 Enqueue Mode와 Compatible 표에 의해 Resource Structure를 어떻게 이용하는가에 따라 운영된다.
해당 Enqueue Mode가 Resource Structure의 Owner 큐를 이용한다면 해당 Enqueue를 획득하게 되는 것이고 Wait 큐에 배치된다면 Owner 큐의 작업이 종료 할 때까지 Wait 큐에 존재하는 세션에 대해 Enqueue Wait를 발생시키게 된다.
그럼 다음 시간에는 Enqueue의 실제 운영과 확인 방법에 대해 설명한다
- 강좌 URL : http://www.gurubee.net/lecture/2693
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.