데이터베이스 연산 조합
- 읽기/쓰기/잠금/트랜잭션은 조합에 따라 읽기 비용, 쓰기 비용, 락 오버헤드, 트랜잭션 오버헤드가 달라진다.
- 읽기 비용(Read Cost)
- 데이터를 읽기 위해 필요한 I/O 및 CPU 비용
- 쓰기 비용(Write Cost)
- 데이터를 수정 또는 삽입하기 위한 비용
- 락 오버헤드(Lock Overhead)
- 동시 접근을 제어하기 위해 잠금을 설정하는 비용
- 트랜잭션 오버헤드(Transaction Overhead)
- 트랜잭션의 시작, 커밋, 롤백에 소요되는 비용
연산 조합에 따른 비용 분석
| 연산 조합 | 읽기 비용 | 쓰기 비용 | 락 오버헤드 |
트랜잭션 오버헤드 |
비고 |
| 단순 읽기 | 하 | - | - | 하 | 데이터 읽기만 수행 |
| 읽기 + 공유 잠금 (S Lock) |
중 | - | 하 | 하 | 읽기 중 데이터 변경 방지 |
| 읽기 + 단독 잠금 (X Lock) |
상 | - | 상 | 중 | 읽기 중 데이터 변경 차단 |
| 단순 쓰기 (Insert/Update/Delete) |
- | 중 | 하 | 중 | 데이터 변경만 수행 |
| 쓰기 + 단독 잠금 (X Lock) |
- | 상 | 상 | 상 | 데이터 변경 중 동시 접근 차단 |
| 읽기 + 쓰기 (Read-Modify-Write) |
중 | 상 | 중 | 상 | 조회 후 수정 작업 수행 |
| 다중 트랜잭션 (멀티스레드) |
중~상 | 중~상 | 상 | 상 | 동시 작업 처리, 교착 상태 가능 |
교착 상태(Deadlock) 위험도
| 잠금 조합 | Deadlock 위험도 | 설명 |
| 읽기 + 읽기 | 하 | 동시에 읽기 가능 |
| 읽기 + 쓰기 | 중 | 쓰기 작업이 대기 상태에 들어감 |
| 쓰기 + 쓰기 | 상 | 두 트랜잭션이 서로 잠금을 기다릴 경우 발생 |
성능 특성
| 특성 | 읽기 잠금 | 쓰기 잠금 |
| 동시성 | 상 | 하 |
| 데이터 일관성 | 하 | 상 |
| 트랜잭션 속도 | 상 | 하 |
최적화
| 상황 | 권장 잠금 방식 | 이유 |
| 단순 읽기 작업 | 읽기 잠금 | 동시성 최적화 |
| 자주 변경되는 데이터 | 쓰기 잠금 | 데이터 무결성 보장 |
| 높은 동시성 환경 | 읽기 잠금 | 교착 상태 방지 |
| 비즈니스 규칙 검증 후 업데이트 | Select + Update | 성능과 무결성 균형 |