MySQL에서 트랜잭션 격리 수준(Transaction Isolation Level)이란 무엇인가요?
_____A1: 트랜잭션 격리 수준은 동시에 실행되는 여러 트랜잭션 간에 서로의 작업이 어떻게 영향을 미치는지를 정의하는 설정입니다. 즉, 한 트랜잭션이 처리 중인 데이터에 대해 다른 트랜잭션이 읽기나 쓰기를 어떻게 허용할지를 결정하여 데이터 일관성과 동시성 간 균형을 맞추는 역할을 합니다.
Q2: MySQL에서 지원하는 주요 트랜잭션 격리 수준에는 어떤 것들이 있나요?
A2: MySQL은 표준 SQL에서 정의된 네 가지 트랜잭션 격리 수준을 지원합니다.
1. READ UNCOMMITTED : 가장 낮은 격리 수준으로, 커밋되지 않은 데이터(더티 리드)를 다른 트랜잭션이 읽을 수 있습니다.
2. READ COMMITTED : 커밋된 데이터만 읽을 수 있어 더티 리드를 방지하지만, 같은 쿼리를 두 번 실행 시 결과가 달라질 수 있는 비반복 읽기가 발생할 수 있습니다.
3. REPEATABLE READ (MySQL 기본값): 트랜잭션이 시작된 시점에 일관된 데이터를 보장해 비반복 읽기를 방지하며, 팬텀 리드 일부도 방어합니다.
4. SERIALIZABLE : 가장 높은 격리 수준으로, 모든 트랜잭션을 직렬 실행한 것과 같은 결과를 보장하지만 동시성은 매우 낮아집니다.
Q3: 각 격리 수준은 데이터 일관성에 어떤 영향을 미치나요?
A3:
- READ UNCOMMITTED: 더티 리드 발생 가능 → 가장 낮은 일관성.
- READ COMMITTED: 더티 리드는 방지하지만 비반복 읽기 발생 가능.
- REPEATABLE READ: 더티 리드 및 비반복 읽기 방지, 팬텀 리드 대부분 차단.
- SERIALIZABLE: 모든 이상 현상(더티 리드, 비반복 읽기, 팬텀 리드) 방지 → 가장 높은 일관성.
Q4: MySQL에서 기본 트랜잭션 격리 수준은 무엇인가요?
A4: MySQL 기본값은 REPEATABLE READ 입니다. 이는 일반적인 데이터 무결성과 성능 사이의 균형을 제공하며, InnoDB 스토리지 엔진의 다중 버전 동시성 제어(MVCC)와 잘 맞습니다.
Q5: 트랜잭션 격리 수준은 어떻게 변경하나요?
A5: 글로벌 혹은 세션 단위로 설정할 수 있습니다.
- 세션 단위 변경:
```sql
SET SESSION TRANSACTION ISOLATION LEVEL [격리수준];
- 글로벌 단위 변경(서버 전체 적용, 재시작 시 초기화):
```sql
SET GLOBAL TRANSACTION ISOLATION LEVEL [격리수준];
```
예:
```sql
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
```
Q6: 트랜잭션 격리 수준 설정이 성능에 미치는 영향은?
A6: 격리 수준이 높을수록 데이터 일관성은 향상되지만 잠금(lock)과 대기 시간이 길어져 동시성 성능이 저하될 수 있습니다. 예를 들어 SERIALIZABLE은 가장 안전하지만 처리 속도가 느려지고, READ UNCOMMITTED은 가장 빠르지만 데이터 무결성 위험이 큽니다.
Q7: MySQL에서 격리 수준과 관련된 주요 이상 현상(Anomalies)에는 어떤 것들이 있나요?
A7:
- 더티 리드(Dirty Read) : 다른 트랜잭션이 커밋하지 않은 데이터를 읽는 현상.
- 비반복 읽기(Non-repeatable Read) : 동일 쿼리를 두 번 실행했을 때 다른 결과가 나오는 현상.
- 팬텀 리드(Phantom Read) : 트랜잭션 내에서 조건에 맞는 행이 추가되거나 삭제되어 이전 쿼리 결과와 달라지는 현상.
Q8: REPEATABLE READ 격리 수준에서 팬텀 리드 문제는 어떻게 방지되나요?
A8: MySQL의 InnoDB 엔진은 REPEATABLE READ를 구현할 때 다중 버전 동시성 제어(MVCC)를 이용하며, 추가로 갭 잠금(gap lock)을 사용해 팬텀 리드를 방지합니다. 따라서 REPEATABLE READ가 사실상 팬텀 리드를 막아주기 때문에 SERIALIZABLE과 유사한 보호를 제공합니다.
---
이상으로 MySQL에서 트랜잭션 격리 수준에 대한 기본 개념부터 상세한 설명과 설정 방법, 영향, 그리고 관련 문제점까지 FAQ 형식으로 안내해 드렸습니다.
작성자:
최지율 [비회원]
| 작성일자: 1년 전
2024-09-20 08:05:26
조회수: 168 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 168 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.