다중 사용자 환경을 지원하는 데이터베이스 시스템 환경에서 여러 트랜잭션들이 동시에 수행되더라도 데이터의 무결성과 일관성을 보장하며 처리 가능하도록 병행 제어를 수행해야 한다. 다음 각 항목에 대하여 설명하시오.
1. 병행 제어의 필요성 |
- 다중 사용자 환경을 지원하는 데이터베이스에서 ACID를 보장하기 위해, 여러 트랜잭션들이 동시에 실행될 수 있도록 하는 병행 제어가 필요
- 병행 제어(동시성 제어)가 어려운 이유는 동시성(Concurrency) 과 일관성(Consistency)은 Trade-off 관계이기 때문 - 동시성을 높이려고 Lock 사용을 최소화 하면 일관성 유지가 어렵고, 일관성을 높이려고 Lock 을 적극적으로 사용하면 동시성이 저하됨 |
2. 병행 제어를 하지 않는 경우 발생하는 문제점 |
구분 | 내용 | 사례 |
갱신 손실 (Lost Update) |
이전 트랜잭션이 데이터를 갱신한 후 트랜잭션을 종료하기 전에 나중 트랜잭션이 갱신 값을 덮어쓰는 경우 발생 | Tx1과 Tx2가 동시에 갱신을 시도하여 늦게 발생된 Tx2에의해 Tx1의 수행이 무효화 |
현황파악오류(Dirty Read) | 트랜잭션의 중간 수행결과를 다른 트랜잭션이 참조함으로써 발생하는 오류 | Tx1에서 일어난 트랜잭션 실행이 Tx2에도 영향을 미침. |
모순성(Inconsistency) | 두 트랙잭션이 동시에 실행할 때 DB가 일관성이 없는 상태로 남는 문제 | Tx1와 Tx2가 동시에 실행되는 과정에서 데이터 값이 상호 연관 없이 변질됨. |
연쇄복귀 (Cascading Rollback) |
복수의 트랜잭션이 데이터 공유시 특정 트랜잭션이 처리를 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가능 | Tx1이 실행 실패로 인해 롤백되어야 하는데 성공적으로 실행된 Tx2도 롤백되는 현상 |
3. 병행 제어 기법의 종류 |
종류 | 상세설명 | 특징 |
Locking | 트랜잭션이 사용하는 자원에 대하여 상호 배제(Mutual Exclusive) 기능을 제공 | 공유 Lock, 배타적 Lock |
2PL | 모든 트랜잭션들을 Lock과 Unlock 연산을 확장단계와 수축단계로 구분 |
교착상태, Cascading rollback 문제 발생 가능 |
Timestamp | 트랜잭션을 식별하기 위해 타임 스탬프를 지정하여 트랜잭션간의 순서를 선택 |
시스템 시계, 논리적 계수기 |
낙관적 검증 기법 | 트랜잭션 수행 동안은 어떠한 검사도 하지 않고, 트랜잭션 종료 시 일괄적으로 직렬성 위반을 검사 |
Read, Validation, Write |
- 동시에 실행되는 트랜잭션 수를 최대화 하고 입력, 수정, 삭제, 검색 시 데이터 무결성이 유지되도록 해야 함
728x90
'IT 이야기' 카테고리의 다른 글
ChatGPT, 제대로 질문하는 방법(좋은 프롬프트 예시) (0) | 2023.07.14 |
---|---|
프롬프트 엔지니어링(Prompt Engineering)이란? ChatGPT 제대로 사용하는 방법 (0) | 2023.07.13 |
[노트필기로 정리하는 소공] 통합버전 (0) | 2022.02.20 |
대규모 IT 프로젝트에 애자일을 적용하기 위한 방안 (0) | 2020.11.23 |
코드 작성 시 가독성 좋은 폰트 추천, D2Coding (0) | 2020.08.26 |