트랜잭션이란?
: 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위
하나의 트랜잭션은 commit 되거나 rollback 된다.
트랜잭션은 일반적으로 회복의 단위가 된다
트랜잭션의 특성 (ACID)
- 원자성 (Atomicity) : 트랜잭션 연산은 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야함. 에러 발생 시 트랜잭션 전부 취소되어야함
- 일관성(Consistency) : 트랜잭션이 성공적으로 완료되면 언제나 일관성 있는 데이터벤이스 상태를 가져야함
- 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션 연산이 까어들 수 없음
- 영속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야함
Commit, Rollback 연산
- Commit : 트랜잭션에 대한 작업이 성공적으로 끝났고, 데이터베이스가 다시 일관된 상태에 있을 때 완료를 트랜잭션 관리자에게 알려줌
- Rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때 트랜잭션의 일부가 정상적으로 처리되었더라도 원자성 구현 위해 해당 트랜잭션이 행한 모든 연산 취소시키는 연산.
동시성 제어 (Concurrency control)
: 여러 사용자가 동시에 여러 개의 트랜잭션을 병행 수행시킬 떄, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것.
로킹(Locking)
: 주요 데이터의 액세서를 상호 배타적으로 하는 것
트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 lock을 요청해서 lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법.
데드락(deadlock)
두 개 이상의 트랜잭션들이 서로 상대방이 보유하고 있는 로크 요청하면서 기다리고 있는 상황
데드록 해결 위해 데드록 방지 기법이나 데드록 탐지하고 희생자 선정하여 데드록 푸는 기법 등 사용
회복 (Recovery)
: 트랜잭션의 처리를 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 항태로 복구시키는 작업. 데이터베이스의 일관성을 유지함
회복을 위한 조치
Redo : 가장 최근 복제본 + 로그 -> 데이터베이스 복원
Undo : 로그 + 모든 변경 취소 -> 원래의 데이터베이스 상태로 복원
체크포인트
로그를 사용하더라도 어떤 트랜잭션의 갱신 사항이 주기억장치 버퍼로부터 디스크에 기록되었는가를 구분할 수 없으므로 회복 시 재수행할 트랜잭션의 수를 줄이기 위해 주기적으로 체크포인트 수행
체크포인트 시점에는 주기억장치의 버퍼 내용이 디스크에 강제로 기록되므로, 체크포인트르 수행하면 디스크 상에서 로그와 데이터베이스의 내용이 일치하게됨
'CS > 데이터베이스' 카테고리의 다른 글
데이터베이스 면접 스터디 회고글 (1) | 2024.12.03 |
---|---|
데이터베이스 4주차 - 정규화 (0) | 2024.11.18 |
데이터베이스 스터디 3주차 (2) | 2024.11.14 |
데이터베이스 2주차 스터디 (6) | 2024.11.07 |
데이터베이스 1주차 스터디 (0) | 2024.10.31 |