트랜잭션
트랜잭션이란 데이터베이스의 상태를 바꾸기 위해 수행하는 작업의 단위 또는 일련의 연산을 의미한다.
트랜잭션의 4가지 특성(ACID)
원자성(Atomicity) | 트랜잭션이 데이터베이스에 완전히 반영되거나 아예 실행되지 않아야 한다. |
일관성(Consistency) | 트랜잭션 수행이 완료된 데이터베이스는 일관성이 있다. |
독립성(Isolation) | 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들 수 없다. |
영속성(Durability) | 완료한 트랜잭션의 결과가 데이터베이스에 영구적으로 반영된다. |
트랜잭션을 제어하기 위한 명령어(TCL)
COMMIT | 트랜잭션이 정상적으로 종료되어 데이터베이스에 변경 사항을 반영한다. |
ROLLBACK | 트랜잭션이 비정상적으로 종료되어 트랜잭션이 수행한 변경 사항을 취소하고 데이터베이스를 이전 상태로 되돌린다. |
SAVEPOINT | 트랜잭션에서 특정 지점을 지정한다 ROLLBACK과 함께 사용하면 해당 지점까지 되돌릴 수 있다. |
트랜잭션 격리
Read Uncommited | 트랜잭션의 COMMIT여부에 상관없이 다른 트랜잭션이 데이터를 조회할 수 있다. 동시성은 높지만 일관성을 유지하기 어렵다. |
Read Commited | COMMIT된 데이터만 조회가 가능하다 |
Repeatable Read | 트랜잭션이 읽은 데이터를 다른 트랜잭션이 갱신, 삭제할 수 없다. |
Serializable | 트랜잭션이 읽은 데이터를 다른 트랜잭션이 갱신, 삭제, 삽입할 수 없다. |
락
락은 트랜잭션이 처리되는 순서를 보장하기 위한 방법이다.
- 공유 락(shared lock)
데이터를 읽는 락
읽는 연산이므로 데이터의 일관성에 영향을 주지 않아 여러 공유 락이 동시에 접근이 가능하다. - 베타 락(exclusive lock)
데이터를 수정하는 락
하나의 베타 락이 접근 중일 때 다른 베타 락이 접근할 수 없다.
교착 상태(deadlock)
한 트랜잭션이 자신이 처리 중인 데이터에 대해 락을 가진 상태에서 다른 트랜잭션이 처리 중인 데이터에 대해 락을 요청해 무한 대기 상태에 빠진 현상을 의미한다.
💡 교착 상태 예방하는 방법 ❗️❗️
- 예방 기법 : 트랜잭션 처리가 시작되기 전에 필요한 데이터에 대해 미리 락을 얻는 방식
- 회피 기법 : 트랜잭션이 들어온 순서에 따라 교착 상태를 회피하는 방식
· wait-die : 락을 요청하려는 트랜잭션이 이미 락을 갖고 있는 트랜잭션보다 오래되었으면 기다림, 아니면 포기
· wound-wait : 락을 요청하려는 트랜잭션이 이미 락을 갖고 있는 트랜잭션보다 오래되었으면 뺏기, 아니면 기다림
이상
트랜잭션을 처리하는 중에 속성 간 종속이나 데이터 중복으로 발생하는 문제
- 삽입 이상(insertion anomaly) : 데이터 삽입 시 의도치 않은 다른 데이터도 삽입
- 갱신 이상(update anomaly) : 데이터 갱신 시 일부 튜플만 갱신되어 데이터 모순 발생
- 삭제 이상(deletion anomaly) : 데이터 삭제 시 의도하지 않은 데이터도 삭제
정규화
데이터베이스의 이상 현상을 해결하기 위해 테이블을 분해하는 것
- 단점 : 테이블을 분해하느라 연산 시간이 증가
- 장점 : 이상 현상을 해결하고 연산 속도를 보장한다.
정규형
정규화된 결과를 말한다.
ⓐ 제 1 정규형
테이블의 모든 속성 값이 더 이상 분해될 수 없는 값, 즉 원자 값으로 구성
ⓑ 제 2 정규형
부분적 함수 종속을 제거해 완전 함수 종속을 만든다.
ⓒ 제 3 정규형
이행적 종속이 없어야한다.
a -> b, b- > c이면 a -> c 이다. 이걸 없애야함
ⓓ BCNF 정규형
모든 결정자가 후보 키가 되도록 테이블을 분해한다.
ⓔ 제 4 정규형
다치 종속 제거
ⓕ 제 5 정규형
조인 종속 제거
역정규화
정규화된 테이블을 낮은 정규화 단계의 테이블로 되돌리는 것
- 읽기 성능을 향상시킬 때 사용
- 테이블이 분해되면 필요한 결과 데이터를 얻기 위해 조인 연산을 여러 번 수행해야한다.
-> 데이터베이스를 빈번히 조회하는 경우 성능 저하가 생길 수 있다.
'[ STUDY ] > CS' 카테고리의 다른 글
[ 자료구조 ] 선형 자료구조 & 비선형 자료구조 (1) | 2024.11.17 |
---|---|
[ 데이터베이스 ] 조인 (1) | 2024.11.16 |
[ 데이터베이스 ] 관계형 데이터베이스 (1) | 2024.11.15 |
[ 데이터베이스 ] 데이터베이스의 종류 (1) | 2024.11.15 |
[ 컴퓨터 네트워크 ] REST (1) | 2024.11.13 |