[1. 트랜잭션]
1. 트랜잭션의 개념
- 업무 처리의 단위
- 하나의 논리적인 작업 단위를 이루는 연산들의 집합
- 데이터베이스의 일관된 상태를 또 다른 일관된 상태로 변환시킴
- 한 번에 수행되어야 할 데이터베이스의 일련의 읽기와 쓰기 연산을 수행하는 단위
- 여러 개의 쿼리를 하나로 묶는 단위 (쿼리=데이터베이스에 접근하는 방법)
2. 커밋과 롤백
- 커밋(Commit) : 하나의 트랜잭션이 성공적으로 처리되었음을 확정하는 명령어
- 롤백(Rollback) : 하나의 트랜잭션으로 처리한 묶음 과정을 취소하는 일
- 커밋과 롤백으로 인해 작업을 그룹화할 수 있으며 데이터의 무결성(integrity)보장 가능
[2. 트랜잭션의 ACID 특징]
1. 원자성(Atomicity)
- 한 개의 트랜잭션과 관련된 모든 일이 함께 성공하거나 함께 실패하는 것
- 커밋&롤백
2. 일관성(Consistency)
- 허용된 방식으로만 데이터를 변경하는 것
- 항상 기대되는 값을 정확히 보여줄 수 있도록 다른 트랜잭션이 끼어들지 못하게 해야 함
3. 고립성, 격리성(Isolation)
- 트랜잭션 수행시 서로 끼어들지 못하도록 하는 것
4. 영속성(Durability)
- 수행된 트랜잭션은 영원히 반영되어야 한다는 것
- 데이터베이스 시스템에 장애가 발생하더라도 복구될 수 있는 회복기능이 있어야 함
[3. 동시성(병행) 제어]
1. 동시성 제어 : 다중 사용자 환경을 지원하는 데이터베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기능
2. 트랜잭션의 직렬가능 스케줄 : 직렬성을 가진 스케줄이란, 각각의 트랜잭션이 동시에 수행된 결과가 트랜잭션이 순차적으로 수행된 결과와 같을 경우
3. 동시성 제어의 목적
- 직렬가능스케줄의 생성 또는 직렬가능성 보장
- 공유도 최대화, 응답시간 최소화, 시스템 활동의 최대 보장
- 데이터의 무결성 및 일관성 보장
[4. 트랜잭션 격리 수준]
1. 직렬화(SERIALIZABLE_READ)
- 트랜잭션을 순차적으로 진행시키는 것
- 트랜잭션 내에서 질의를 두 번 이상 수행할 때 첫 번째 질의에 있던 레코드가 사라지거나 값이 바뀌지 않으며 새로운 레코드가 나타나지도 않게 하는 것
2. 반복 읽기(REPEATABLE_READ)
- 하나의 트랜잭션이 수정한 행을 다른 트랜잭션이 수정할 수 없도록 막는 것
- 트랜잭션 내에서 질의를 두 번 이상 수행할 때 첫 번째 질의에 있던 레코드가 사라지거나 값이 바뀌는 것을 방지
3. 완료된 읽기(READ_COMMITED)
- 커밋 완료된 데이터에 대해서만 조회를 허용하는 것
- 가장 많이 사용되는 격리 수준
- MySQL8.0, Oracle, SQL Server 등의 기본값
4. 완료되지 않은 읽기(READ_UNCOMMITED)
- 가장 빠르고 가장 낮은 격리수준
- 하나의 트랜잭션이 완료되기 이전에 다른 트랜잭션의 접근을 허용함
[5. 격리 수준에 따라 발생하는 현상]
1. 팬텀리드(Phantom read)
- 한 트랜잭션 내에서 동일한 쿼리를 보냈을 때 조회 결과가 다른 경우
Ex. 트랜잭션1의 절차 : 조회1, 레코드 삽입, 조회2 → 레코드 삽입에 의해 첫 번째 조회와 두 번째 조회의 결과가 달라짐
2. 반복 가능하지 않은 조회(Non-repeatable read)
- 한 트랜잭션 내에 같은 질의가 발생했을 때 그 결과값이 서로 다른 경우
Ex. 트랜잭션 절차 : 조회, 레코드 변경, 조회 (커밋 완료) → 처음 조회한 사람은 이후 변경된 값만을 조회할 수 있음
3. 더티 리드(Dirty read)
- 한 트랜잭션이 실행중일 때 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 경우
Ex. 절차 : 레코드 변경(트랜잭션1), 조회(트랜잭션2), 커밋완료(트랜잭션1) → 커밋이 완료되지 않았지만 변경된 레코드 값을 조회할 수 있음
격리 수준에 따른 동시성 | |||
격리 수준 | Dirty read | Non-repeatable read | Phantom read |
Read Uncommited | O | O | O |
Read Commited | X | O | O |
Repeatable Read | X | X | O |
Serialized Read | X | X | X |
'데이터베이스 > DB 이론' 카테고리의 다른 글
[데이터베이스] 5. 조인 (0) | 2023.02.17 |
---|---|
[데이터베이스] 4. 인덱스 (0) | 2023.02.17 |
[데이터베이스] 3. 무결성 (0) | 2023.02.07 |
[데이터베이스] 1.데이터베이스 기본 (0) | 2023.02.01 |