[자격증]/정보처리기사 실기

1450803 DB 트랜잭션 연산 & 트랜잭션의 특성

Ben의 프로그램 2023. 9. 23. 15:28
728x90

핵심 Keyword

1. DB의 트랜잭션 연산 

2. 트랜잭션의 특성

3. Durability 의 구현


DB의 트랜잭션 연산
DBMS는 데이터베이스에 치명적인 손실이 발생했을 때 이를 복구하기 위해 데이터베이스의 처리 내용이나 이용 상황 등 상태 변화를 시간의 흐름에 따라 기록한 로그를 생성한다. 

( REDO )는 데이터베이스가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석하여 트랜잭션의 시작(start)과 완료(commit)에 대한 기록이 있는 트랜잭션들의 작업을 '재작업'합니다. 즉 로그를 이용하여 해당 데이터 항목에 대해 이전 값을 이후 값으로 변경하는 연산이다. 

( UNDO ) 는 데이터베이스가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석하여 트랜잭션의 시작을 나타내는 'start'는 있지만 완료를 나타내는 'commit' 기록이 없는 트랜잭션들이 작업한 내용들을 모두 '취소'한다. 즉 로그를 이용하여 해당 데이터 항목에 대해 이후 값을 이전 값으로 변경한다. 

 

트랜잭션의 특성
트랜잭션은 ACID 라는 특성을 갖게 되는데, 이러한 특성을 구현하는 것이 REDO와 UNDO 이다. 

1) Automicity (원자성)
: 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit) 되든지 아니면 전혀 반영되지 않도록 복구(Rollback)되어야 함. 즉 트랜잭션 단위로 변경 또는 롤백 되어야 한다는 것을 의미합니다. 

2) Consistency (일관성)
: 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함. 예를 들어, 고객 개인의 데이터는 변경되었는데, 고객 전체의 통계 데이터는 변경되지 않았다와 같은 것들을 막아야 한다. 

3) Isolation (독립성, 격리성, 순차성)
: 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없습니다. 즉, 둘 이상의 트랜잭션이 동시에 실행되는 하나씩 순서대로 실행되든 결과는 같아야 한다는 것을 의미합니다. 

4) Durability (영속성, 지속성)
: 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함. 즉, 장비가 꺼지더라도 커밋한 데이터는 복구할 수 있어야 한다는 것을 의미합니다. 

 

Durability 지속성 구현
Durability 지속성 구현은 어떻게 구현되었을까? 우선은 데이터베이스의 중요한 특징인 '커밋한 데이터를 지키는 특성인 지속성 Durability 는 커밋한 데이터를 그 즉시 디스크에 기록하면 될 것 처럼 보인다. 하지만 여기서 생각해야 하는 부분은 첫머리를 찾는 시간이 디스크 I/O 의 대부분을 차지하고 있다는 디스크의 특성이다. 첫머리를 찾는 시간이 이 방법으로는 대량의 데이터를 변경하면 커밋하는 데 너무 많은 시간이 걸리게 된다. 그래서 상용 RDBMS 대부분은 로그 (변경 로그)를 채용하여 성능과 지속성을 양립시킬 수 있게 하였다. MySQL이나 Oracle 도 마찬가지로 REDO 로그(WAL이라고도 하는데)를 통해서 성능과 지속성을 확보 했다. REDO 로그에 데이터를 한꺼번에 기록하는 것으로 I/O 의 횟수가 줄어들고, 시퀀셜 액세스를 사용하여 I/O 에 소모되는 시간을 줄이는데 성공했다. 

 

 

 

 

 

'[자격증] > 정보처리기사 실기' 카테고리의 다른 글

1450806 이상 Anormaly  (0) 2023.09.23
1450805 Java Thread  (0) 2023.09.23
1450802 RAID 의 레벨  (0) 2023.09.23
1450920 시스템 구조도, 모듈 관계, Fan-In, Fan-Out  (0) 2023.09.23
1450919 인터넷  (0) 2023.09.23