목차
DB세션
- 데이터베이스 접속을 시작으로, 여러 작업을 수행한 후 접속 종료까지의 전체 기간
- 세션 내부에는 하나 이상의 트랜잭션이 존재할 수 있음
- 일반적으로 데이터베이스는 여러 곳에서 동시에 접근이 가능하기 때문에 많은 세션이 동시에 연결될수 있음
- 세션은 데이터가 변경, 삭제가 확정될때까지 해당 데이터 조작을 분리처리함으로써 데이터와 테이블과의 관계를 보존하는 역할을 함
트랜잭션
- 데이터베이스에서 수행되는 하나 이상의 작업을 하나의 논리적 단위로 묶어, 일련의 데이터베이스 조작을 원자적으로 실행하는 개념
트랜잭션의 특징
Atomicity (원자성)
- 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장한다.
Consistency (일관성)
- 트랜잭션이 실행되기 전과 실행된 후에 데이터베이스는 일관된 상태여야 한다.
Isolation (격리)
- 격리는 여러 트랜잭션이 동시에 실행될 때 각 트랜잭션은 서로에게 영향을 미치지 않아야 한다.
Durability (지속성)
- 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 저장되어야 한다.
트랜잭션 명령어
Commit
- 트랜잭션을 완료하고 트랜잭션에서 수행된 모든 데이터 변경을 영구적으로 데이터베이스에 저장하는 작업
Rollback
- 트랜잭션의 변경 사항을 취소하고 트랜잭션을 이전 상태로 되돌리는 작업
Auto Commit
- 데이터 변경 작업에 대한 SQL문이 자동으로 커밋되어 데이터베이스에 즉시 영구적으로 반영되는 작업
트랜잭션 격리 수준
- 여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 여부를 결정하는 것
READ UNCOMMITTIED
- 가장 낮은 격리 수준으로, 트랜잭션은 다른 트랜잭션에서 아직 커밋되지 않은 데이터를 읽을 수 있음
READ UNCOMMITTIED
- 트랜잭션은 다른 트랜잭션에서 커밋된 데이터만 읽을 수 있음
REPEATABLE READ
- READ COMMITTED 레벨과 다르게 처음 생성된 스냅샷을 통해 일관된 읽기 결과를 보장
SERIALIZABLE
- 가장 높은 격리 수준
- 동시성을 완전히 제한하여 트랜잭션 간에 상호작용이 없음
- 모든 트랜잭션을 순차적으로 실행하는 것과 같아서 가장 높은 수준으로 데이터 일관성을 보장하지만 성능 문제가 발생할 수 있음
DB 동시성 제어
- 동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 트랜잭션의 실행 순서를 제어하는 기법
갱신 손실 문제
- 두 개의 트랜잭션이 하나의 데이터를 동시에 갱신할 때 발생하는 문제
DB Lock
- 두 개 이상의 트랜잭션이 각각 자신의 데이터에 대하여 락을 획득하고 상대방 데이터에 대하여 락을 요청하면 무한 대기 상태에 빠질 수 있는 현상
DB Lock 종류
- 베타 락(Exclusive Lock)
- 업데이트 락(Update Lock)
- 내재 락(Intent Lock)
DB 데드락(교착상태)
- 두 개 이상의 트랜잭션이 다른 트랜잭션의 잠금을 기다리면서 진행하지 못하는 상태
DB 회복
- 데이터베이스를 장애가 발생했던 이전의 상태로 복구시켜서 일관된 데이터베이스 상태를 만드는 것
REDO와 UNDO을 통해 복구(회복) 수행
REDO (재실행)
- REDO는 장애가 발생 후 로그 파일에 트랜잭션의 시작(START)이 있고 종료(COMMIT)이 있는 경우 트랜잭션의 작업을 재실행하는 과정
UNDO (취소)
- UNDO는 장애가 발생 후 로그 파일에 트랜잭션의 시작(START)만 있고 종료(COMMIT)이 없는 경우 해당 트랜잭션이 작업한 변경 내용을 원상복구시키는 과정
회복 기법
로그 기반 회복 기법
- 지연갱신
- 즉시갱신
체크포인트 회복 기법
- 장애 발생 시 체크포인트 이전에 처리된 트랜잭션은 회복에서 제외하고 체크포인트 이후에 처리된 트랜잭션은 회복 작업 수행하는 기법
그림자페이징 회복 기법
- 트랜젝션 수행 중 현재 페이지 테이블과 그림자 페이지 테이블을 운용하며, 현재 페이지 테이블을 우선 갱신하고 트랜잭션 종료 시 그림자 페이지 테이블 갱신
참고자료
https://mangkyu.tistory.com/299#recentEntries
https://tecoble.techcourse.co.kr/post/2022-11-07-mysql-isolation/
https://velog.io/@ha0kim/%EB%8F%99%EC%8B%9C%EC%84%B1-%EC%A0%9C%EC%96%B4
https://mangkyu.tistory.com/30
'CS > DB' 카테고리의 다른 글
[DB 스터디 4주차] 이상현상, 함수적 종속성, 정규화 (1) | 2024.03.27 |
---|---|
[DB 스터디 3주차] Index (0) | 2024.03.21 |
[DB 스터디 2주차] SQL (2) | 2024.03.14 |
[DB 스터디 1주차] 데이터베이스 & 관계형 데이터베이스 기본 개념 (4) | 2024.03.06 |