일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정렬
- hadoop
- 도메인 주도 개발 시작하기
- http 개념
- http 완벽가이드
- flask
- go
- 도메인 주도 개발
- 12761번 돌다리
- 우분투
- String 함수
- MongoDB Realm
- 백준 파이썬
- 백준 12761
- golang
- 몽고디비 렘
- 파이썬
- 트리 순회
- 자바 디자인 패턴
- domain driven develop
- 백준
- 자바 디자인패턴
- 자바
- 고 배열
- 백준 사이트
- 백준 12761번
- ddd
- 하둡
- 12761 돌다리
- golang struct
- Today
- Total
개발바닥
[ 기술면접 / 데이터베이스 ] 동시성 제어( Concurrency Control ) 본문
동시성 제어( Concurrency Control ) 란?
동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 트랜잭션의 실행 순서를 제어하는 기법이다.
동시성 제어의 정의
- 다중 사용자 환경을 지원하는 데이터 베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기능
- 다중 사용자 환경을 지원하는 DB system의 경우 필수적으로 지원해야 하는 기능으로 병행제어라고도 한다.
- 트랜잭션의 직렬화 수행 보장
동시성 제어의 목적
- 트랜잭션의 직렬성 보장
- 공유도 최대, 응답 시간 최소, 시스템 활동의 최대 보장
- 데이터의 무결성 및 일관성 보장
동시성 제어 기법의 종류
제어 기법 | 설명 |
락킹(locking) |
- 트랜잭션이 데이터에 잠금(lock)을 설정하면 다른 트랜잭션은 해당 데이터에 대해 잠금이 해제(unlock)될 때까지 접근/수정/삭제가 불가하다. - 트랜잭션이 사용하는 자원에 대하여 상호 배제(Mutual Exclusive) 기능을 제공하는 기법 |
타임스탬프(timestamp) | - 시스템에서 생성하는 고유 번호인 타임스탬프를 트랜잭션에 부여함으로써 트랜잭션간의 접근 순서를 미리 정한다. |
적합성(validation) 검증 | - 먼저 트랜잭션을 수행하고 트랜잭션을 종료할 때 적합성을 검증하여 데이터베이스에 최종 반영한다. |
※ 상호배제는 특정 트랜잭션이 데이터 항목에 대하여 잠금 (Lock)을 설정할 트랜잭션이 해제(unlock) 할 때 까지 데이터를 독점적으로 사용할 수 있는 것
동시성 제어를 하지 않은 경우 발생하는 문제점
구분 | 설명 |
갱신 손실 (Lost Update) |
- 하나의 트랜잭션이 갱신한 내용을 다른 트랜잭션이 덮어씀으로써 갱신이 무효화가 되는 것을 의미 - 두 개이상 트랜잭션이 한 개의 데이터를 동시에 갱신(Update)할 때 발생 |
현황파악오류 (Dirty Read) |
- 읽기 작업을 하는 트랜잭션 1이 쓰기 작업을 하는 트랜잭션2가 작업한 중간 데이터를 읽기 때문에 발생하는 문제 - 작업중인 트랜잭션 2가 작업을 Rollback한 경우 트랜잭션 1은 무효가 된 데이터를 읽게 되고 잘못된 결과를 도출한다. |
모순성 (Inconsistency) |
- 다른 트랜잭션들이 해당 항목 값을 갱신하는 동안 한 트랜잭션이 두 개의 항목 값 중 어떤 것은 갱신되기 전의 값을 읽고 다른 것은 갱신된 후의 값을 읽게 되어 데이터의 불일치가 발생하는 상황 |
연쇄복귀 (Cascading Rollback) |
- 두 트랜잭션이 동일한 데이터 내용을 접근할 때 발생 - 한 트랜잭션이 데이터를 갱신한 다음 실패하여 Rollback 연산을 수행하는 과정에서 갱신과 Rollback 연산을 실행하고 있는 사이에 해당 데이터를 읽어서 사용할 때 발생할 수 있는 문제 |
'개인 공부 > 기술 면접' 카테고리의 다른 글
[ 기술면접 ] C & C++ 차이점 정리 (0) | 2020.04.09 |
---|---|
[ 기술면접 / 운영체제] 세마포어(Semaphore) & 뮤텍스(Mutex) (0) | 2020.03.27 |
[ 기술면접 / 데이터베이스 ] 트랜잭션 ( Transaction ) (0) | 2020.03.18 |
[ 기술면접 / 컴퓨터구조] 파이프 라이닝 (0) | 2020.03.16 |
[ 기술면접 / 운영체제 ] OS 용어 정리 & 프로세스 (0) | 2020.03.05 |