본문 바로가기
DB

DB Lock 와 DB Recovery

by 요섹남 2023. 10. 14.

데이터베이스 락(Database Lock)

락은 여러 트랜잭션이 동시에 데이터에 접근하는 것을 제어하기 위한 메커니즘이다. 락은 크게 공유 락과 배타적 락으로 나뉜다.

 

1. 공유 락(Shared Lock) : 여러 트랜잭션이 동시에 데이터를 읽을 수 있지만, 쓰기 작업은 하나의 트랜잭션만 수행할 수 있다.

 

2. 배타적 락(Exclusive Lock) : 특정 트랜잭션이 데이터를 읽거나 쓰기 위해 락을 획득하면, 다른 트랜잭션은 해당 데이터에 대한 접근을 금지받는다.

 

데이터베이스 회복(Database Recovery)

데이터베이스 회복은 시스템 또는 하드웨어 장애, 트랜잭션 오류 등으로 인해 손상된 데이터베이스를 복구하는 과정이다.

 

장애의 유형

1. 실행 장애

- 사용자의 실수, 무결성 규정 위반 등으로 질의 실행이 실패하는 현상

2. 트랜잭션 장애

- 트랜잭션 내부에서 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 비정상적인 상황으로 인하여 트랜잭션 실행이 중지되는 현상

3. 시스템 장애

- 데이터베이스에는 손상을 입히지 않으나 하드웨어 오동작, 정전, 소프트웨어 오류, 고착 상태 등에 의해 실행중인 모든 트랜잭션들이 더 이상 실행을 계속할 수 없는 현상

4. 미디어 장애

- 저장 장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스가 물리적으로 손상되는 현상

 

회복의 단계

1. 로그 기록 : 트랜잭션이 수행되는 동안 변경된 내용을 로그에 기록한다. 로그는 트랜잭션의 시작과 종료, 데이터 변경 등의 정보를 기록하며, 데이터베이스를 일관된 상태로 유지하는 데 중요한 역할을 한다.

2. 복구 : 데이터베이스가 손상되었을 때, 로그를 사용하여 손상된 부분을 복구한다. 로그를 통해 트랜잭션을 재실행하거나(Redo) 트랜잭션이 적용되기 전 상태로 되돌린다(Undo).

 

회복 기법

1. 순차적 회복(Undo / Redo) : 변경된 내용을 로그에 기록하고, 장애 발생 시 로그를 통해 트랜잭션을 재실행하거나 이전 상태로 되돌린다.

2. 체크포인트 기반 회복 : 주기적으로 체크포인트를 설정하여 로그 파일을 일정 기간 이전으로 되돌릴 수 있습니다.

3. 데드락 검출 및 해결 : 락 기반의 병행제어에서 발생할 수 있는 데드락을 검출하고 해결하는 기법을 사용하여 회복성을 향상시킵니다.

'DB' 카테고리의 다른 글

트랜잭션  (0) 2023.10.14
이상현상, 함수적 종속성, 정규화  (0) 2023.10.14
인덱스 (Index)  (0) 2023.10.14
HDD와 SSD, 랜덤 I/O, 순차 I/O  (0) 2023.09.29
SQL 안티패턴, SQL Injection 공격  (0) 2023.09.21