• 검색 결과가 없습니다.

9장. 트랜잭션

N/A
N/A
Protected

Academic year: 2022

Share "9장. 트랜잭션 "

Copied!
44
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)
(2)

9장. 트랜잭션

 트랜잭션(transaction)

 항공기 예약, 은행, 신용 카드 처리, 대형 할인점 등에서는 대규모 데이터베이스를 수백, 수천 명 이상의 사용자들이 동시에 접근함

 많은 사용자들이 동시에 데이터베이스의 서로 다른 부분 또는 동일한 부분을 접근하면서 데이터베이스를 사용함

 동시성 제어(concurrency control)

 동시에 수행되는 트랜잭션들이 데이터베이스에 미치는 영향은 이들을 순차적으로 수행하였을 때 데이터베이스에 미치는 영향과 같도록 보장

 다수 사용자가 데이터베이스를 동시에 접근하도록 허용하면서 데이터베이스의 일관성을 유지함

(3)

9장. 트랜잭션(계속)

 트랜잭션(transaction)(계속)

 회복(recovery)

 데이터베이스를 갱신하는 도중에 시스템이 고장 나도 데이터베이스의 일관성을 유지함

(4)

9.1 트랜잭션 개요(계속)

 데이터베이스 시스템 환경에서 흔히 볼 수 있는 몇 가지 응용의

예(계속)

(5)

9.1 트랜잭션 개요(계속)

(6)

9.1 트랜잭션 개요(계속)

 만일 SQL문 (2)를 수행하고 SQL문 (3)을 수행하기 전에 컴퓨터 시스템이 다운되고 재기동한 후에 DBMS가 어떻게 대응해야 하는가?

 위의 세 개의 SQL문이 모두 완전하게 수행되거나 하나도 수행되어서는 안되도록, 즉 하나의 트랜잭션(단위)처럼 DBMS가 취급해야 함

 DBMS는 각 SQL문의 의미를 알 수 없으므로 하나의 트랜잭션으로 취급해야 하는 SQL문들의 범위를 사용자가 명시적으로 표시해야 함

(7)

9.1 트랜잭션 개요(계속)

트랜잭션의 특성( ACID 특성)

 원자성(Atomicity)

 한 트랜잭션 내의 모든 연산들이 완전히 수행되거나 전혀 수행되지 않음(all or nothing)을 의미

 DBMS 의 회복 모듈은 시스템이 다운되는 경우에 , 부분적으로 데이터베이스를 갱신한 트랜잭션의 영향을 취소함으로써 트랜잭션의 원자성을 보장함

 완료된 트랜잭션이 갱신한 사항은 트랜잭션의 영향을 재수행함으로써 트랜잭션의 원자성을 보장함

(8)

9.1 트랜잭션 개요(계속)

트랜잭션의 특성(

ACID 특성)(계속)

 일관성(Consistency)

 어떤 트랜잭션이 수행되기 전에 데이터베이스가 일관된 상태를 가졌다면 트랜잭션이 수행된 후에 데이터베이스는 또 다른 일관된 상태를 가짐

 트랜잭션이 수행되는 도중에는 데이터베이스가 일시적으로 일관된 상태를 갖지 않을 수 있음

(9)

9.1 트랜잭션 개요(계속)

(10)

9.1 트랜잭션 개요(계속)

트랜잭션의 특성( ACID 특성)(계속)

 고립성(Isolation)

 한 트랜잭션이 데이터를 갱신하는 동안 이 트랜잭션이 완료되기 전에는 갱신 중인 데이터를 다른 트랜잭션들이 접근하지 못하도록 해야 함

 다수의 트랜잭션들이 동시에 수행되더라도 그 결과는 어떤 순서에 따라 트랜잭션들을 하나씩 차례대로 수행한 결과와 같아야 함

 DBMS의 동시성 제어 모듈이 트랜잭션의 고립성을 보장함

 DBMS는 응용들의 요구사항에 따라 다양한 고립 수준(isolation level)을 제공함

(11)

9.1 트랜잭션 개요(계속)

트랜잭션의 특성( ACID 특성)(계속)

 지속성(Durability)

 일단 한 트랜잭션이 완료되면 이 트랜잭션이 갱신한 것은 그 후에 시스템에 고장이 발생하더라도 손실되지 않음

 완료된 트랜잭션의 효과는 시스템이 고장난 경우에도 데이터베이스에 반영됨

 DBMS의 회복 모듈은 시스템이 다운되는 경우에도 트랜잭션의 지속성을 보장함

(12)

9.1 트랜잭션 개요(계속)

(13)

9.1 트랜잭션 개요(계속)

 트랜잭션의 완료(commit)

 트랜잭션에서 변경하려는 내용이 데이터베이스에 완전하게 반영됨

 SQL 구문상으로 COMMIT WORK

 트랜잭션의 철회(abort)

 트랜잭션에서 변경하려는 내용이 데이터베이스에 일부만 반영된 경우에는 원자성을 보장하기 위해서, 트랜잭션이 갱신한 사항을 트랜잭션이 수행되기 전의 상태로 되돌림

 SQL 구문상으로 ROLLBACK WORK

(14)

9.1 트랜잭션 개요(계속)

(15)

9.2 동시성 제어

동시성 제어

 대부분의 DBMS들은 다수 사용자용

 여러 사용자들이 동시에 동일한 테이블을 접근하기도 함

 DBMS의 성능을 높이기 위해 여러 사용자의 질의나 프로그램들을 동시에 수행하는 것이 필수적

 동시성 제어 기법은 여러 사용자들이 다수의 트랜잭션들을 동시에 수행하는 환경에서 부정확한 결과를 생성할 수 있는, 트랜잭션들 간의 간섭이 생기지 않도록 함

(16)

9.2 동시성 제어

 직렬 스케줄(serial schedule)

 여러 트랜잭션들의 집합을 한 번에 한 트랜잭션씩 차례대로 수행함

 비직렬 스케줄(non-serial schedule)

 여러 트랜잭션들을 동시에 수행함

 직렬가능(serializable)

 비직렬 스케줄의 결과가 어떤 직렬 스케줄의 수행 결과와 동등함

(17)

 데이터베이스 연산

 Input(X) 연산은 데이터베이스 항목 X를 포함하고 있는 블록을 주기억 장치의 버퍼로 읽어들임

 Output(X) 연산은 데이터베이스 항목 X를 포함하고 있는 블록을 디스크에 기록함

 read_item(X) 연산은 주기억 장치 버퍼에서 데이터베이스 항목 X의 값을 프로그램 변수 X로 복사함

 write_item(X) 연 산 은 프 로 그 램 변 수 X 의 값 을 주 기 억 장 치 내의 데이터베이스 항목 X에 기록함

9.2 동시성 제어(계속)

(18)

9.2 동시성 제어(계속)

(19)

 동시성 제어를 하지 않고 다수의 트랜잭션을 동시에 수행할 때 생길 수 있는 문제

 갱신 손실(lost update): 수행 중인 트랜잭션이 갱신한 내용을 다른 트랜잭션이 덮어 씀으로써 갱신이 무효가 되는 것

 오손 데이터 읽기(dirty read): 완료되지 않은 트랜잭션이 갱신한 데이터를 읽는 것

 반복할 수 없는 읽기(unrepeatable read): 한 트랜잭션이 동일한 데이터를 두 번 읽을 때 서로 다른 값을 읽는 것

9.2 동시성 제어(계속)

(20)

 9.1절의 항공기 예약 트랜잭션

 여러 여행사에서 동시에 고객들의 요청에 따라 동일한 날짜에 출발하는 항공기의 빈 좌석 유무를 검사할 수 있음

 그림 9.10의 순서와 같이 만일 두 여행사에서 각각 트랜잭션을 수행하는 과정에 SQL문 (1)의 수행 결과로 특정 항공기에 빈 좌석이 1개 남아

있다는 사실을 확인하고 동시에 SQL문 (2)와 (3)을 수행하여 팔린 좌석수를 1만큼씩 증가시키고 자신의 고객의 정보를 항공사

데이터베이스에 입력하려 할 때 DBMS가 아무런 조치를 취하지 않으면, 1개 남은 좌석에 두 명의 고객이 배정되는 결과를 초래하게 됨

9.2 동시성 제어(계속)

(21)

9.2 동시성 제어(계속)

(22)

 2단계 로킹 프로토콜(2-phase locking protocol)

 로크를 요청하는 것과 로크를 해제하는 것이 2단계로 이루어짐

 로크 확장 단계가 지난 후에 로크 수축 단계에 들어감

 일단 로크를 한 개라도 해제하면 로크 수축 단계에 들어감

9.2 동시성 제어(계속)

(23)

9.2 동시성 제어(계속)

(24)

 2단계 로킹 프로토콜(계속)

 로크 확장 단계(1단계)

 로크 확장 단계에서는 트랜잭션이 데이터 항목에 대하여 새로운 로크를 요청할 수 있지만 보유하고 있던 로크를 하나라도 해제할 수 없음

 로크 수축 단계(2단계)

 로크 수축 단계에서는 보유하고 있던 로크를 해제할 수 있지만 새로운 로크를 요청할 수 없음

 로크 수축 단계에서는 로크를 조금씩 해제할 수도 있고(그림 9.12), 트랜잭션이 완료 시점에 이르렀을 때 한꺼번에 모든 로크를 해제할 수도 있음(그림 9.13)

 일반적으로 한꺼번에 해제하는 방식이 사용됨

 로크 포인트(lock point)는 한 트랜잭션에서 필요로 하는 모든 로크를 걸어놓은 시점

9.2 동시성 제어(계속)

(25)

9.2 동시성 제어(계속)

(26)

 다중 로크 단위(multiple granularity)

 대 부분의 트랜 잭션들이 소수 의 투 플들을 접근 하는 데이터 베이스 응용에서는 투플 단위로 로크를 해도 로크 테이블을 다루는 시간이 오래 걸리지 않음

 트랜잭션들이 많은 투플을 접근하는 데이터베이스 응용에서 투플 단위로만 로크를 한다면 로크 테이블에서 로크 충돌을 검사하고, 로크 정보를 기록하는 시간이 오래 걸림

 트랜잭션이 접근하는 투플의 수에 따라 로크를 하는 데이터 항목의 단위를 구분하는 것이 필요함

 한 트랜잭션에서 로크할 수 있는 데이터 항목이 두 가지 이상 있으면 다중 로크 단위라고 말함

 데이터베이스에서 로크할 수 있는 단위로는 데이터베이스, 릴레이션, 디스크 블록, 투플 등

9.2 동시성 제어(계속)

(27)

 다중 로크 단위(계속)

 일반적으로 DBMS는 각 트랜잭션에서 접근하는 투플 수에 따라 자동적으로 로크 단위를 조정함

 로크 단위가 작을수록 로킹에 따른 오버헤드가 증가함

 로크 단위가 작을수록 동시성의 정도는 증가함

9.2 동시성 제어(계속)

(28)

회복의 필요성

 어떤 트랜잭션 T를 수행하는 도중에 시스템이 다운되었을 때, T의 수행 효과가 디스크의 데이터베이스에 일부 반영되었을 수 있음

어떻게 T의 수행을 취소하여 원자성을 보장할 것인가?

 또한 트랜잭션 T가 완료된 직후에 시스템이 다운되면 T의 모든 갱신 효과가 주기억 장치로부터 디스크에 기록되지 않았을 수 있음

어떻게 T의 수행 결과가 데이터베이스에 완전하게 반영되도록 하여 지속성을 보장할 것인가?

 디스크의 헤드 등이 고장 나서 디스크의 데이터베이스를 접근할 수 없다면 어떻게 할 것인가?

9.3 회복

(29)

회복의 개요

 여러 응용이 주기억 장치 버퍼 내의 동일한 데이터베이스 항목을 갱신한 후에 디스크에 기록함으로써 성능을 향상시키는 것이 중요함

 버퍼의 내용을 디스크에 기록하는 것을 가능하면 최대한 줄이는 것이 일반적

 예: 버퍼가 꽉 찼을 때 또는 트랜잭션이 완료될 때 버퍼의 내용이 디스크에 기록될 수 있음

 트랜잭션이 버퍼에는 갱신 사항을 반영했지만 버퍼의 내용이 디스크에 기록되기 전에 고장이 발생할 수 있음

9.3 회복(계속)

(30)

 회복의 개요(계속)

 고장이 발생하기 전에 트랜잭션이 완료 명령을 수행했다면 회복 모듈은 이 트랜잭션의 갱신 사항을 재수행(REDO)하여 트랜잭션의 갱신이 지속성을 갖도록 해야 함

 고장이 발생하기 전에 트랜잭션이 완료 명령을 수행하지 못했다면 원자성을 보장하기 위해서 이 트랜잭션이 데이터베이스에 반영했을 가능성이 있는 갱신 사항을 취소(UNDO)해야 함

9.3 회복(계속)

(31)

 로그를 사용한 즉시 갱신

 즉시 갱신에서는 트랜잭션이 데이터베이스를 갱신한 사항이 주기억 장치의 버 퍼 에 유 지 되 다 가 트 랜 잭 션 이 완 료 되 기 전 이 라 도 디 스 크 의 데이터베이스에 기록될 수 있음

 데이터베이스에는 완료된 트랜잭션의 수행 결과뿐만 아니라 철회된 트랜잭션의 수행 결과도 반영될 수 있음

 트랜잭션의 원자성과 지속성을 보장하기 위해 DBMS는 로그라고 부르는 특별한 화일을 유지함

 데이터베이스의 항목에 영향을 미치는 모든 트랜잭션의 연산들에 대해서 로그 레코드를 기록함

 각 로그 레코드는 로그 순서 번호(LSN: Log Sequence Number)로 식별됨

9.3 회복(계속)

(32)

9.3 회복(계속)

(33)

9.3 회복(계속)

(34)

 로그 레코드의 유형

 [Trans-ID, start]

 한 트랜잭션이 생성될 때 기록되는 로그 레코드

 [Trans-ID, X, old_value, new_value]

 주 어 진 Trans_ID 를 갖 는 트 랜 잭 션 이 데 이 터 항 목 X 를 이전값(old_value)에서 새값(new_value)로 수정했음을 나타내는 로그 레코드

 [Trans-ID, commit]

 주어진 Trans_ID를 갖는 트랜잭션이 데이터베이스에 대한 갱신을 모두 성공적으로 완료하였음을 나타내는 로그 레코드

 [Trans-ID, abort]

 주어진 Trans_ID를 갖는 트랜잭션이 철회되었음을 나타내는 로그 레코드

9.3 회복(계속)

(35)

9.3 회복(계속)

(36)

9.3 회복(계속)

(37)

 트랜잭션의 완료점(commit point)

 한 트랜잭션의 데이터베이스 갱신 연산이 모두 끝나고 데이터베이스 갱신 사항이 로그에 기록되었을 때

 DBMS의 회복 모듈은 로그를 검사하여 로그에 [Trans-ID, start] 로그 레코드와 [Trans-ID, commit] 로그 레코드가 모두 존재하는 트랜잭션들은 재수행

 [Trans-ID, start] 로그 레코드는 로그에 존재하지만 [Trans-ID, commit]

로그 레코드가 존재하지 않는 트랜잭션들은 취소

9.3 회복(계속)

(38)

9.3 회복(계속)

(39)

9.3 회복(계속)

(40)

 로그 먼저 쓰기(WAL: Write-Ahead Logging)

 트랜잭션이 데이터베이스를 갱신하면 주기억 장치의 데이터베이스 버퍼에 갱신 사항을 기록하고, 로그 버퍼에는 이에 대응되는 로그 레코드를 기록함

 만일 데이터베이스 버퍼가 로그 버퍼보다 먼저 디스크에 기록되는

경우에는 로그 버퍼가 디스크에 기록되기 전에 시스템이 다운되었다가 재기동되었을 때 주기억 장치는 휘발성이므로 데이터베이스 버퍼와 로그 버퍼의 내용은 전혀 남아 있지 않음

 로그 레코드가 없어서 이전값을 알 수 없으므로 트랜잭션의 취소가 불가능함

 따라서 데이터베이스 버퍼보다 로그 버퍼를 먼저 디스크에 기록해야 함

9.3 회복(계속)

(41)

 체크포인트(checkpoint)

 시 스 템 이 다 운 된 시 점 으 로 부 터 오 래 전 에 완 료 된 트 랜 잭 션 들 이 데이터베이스를 갱신한 사항은 이미 디스크에 반영되었을 가능성이 큼

 DBMS가 로그를 사용하더라도 어떤 트랜잭션의 갱신 사항이 주기억 장치 버퍼로부터 디스크에 기록되었는가를 구분할 수 없음

 따라서 DBMS는 회복시 재수행할 트랜잭션의 수를 줄이기 위해서 주기적으로 체크포인트를 수행함

 체크포인트 시점에는 주기억 장치의 버퍼 내용이 디스크에 강제로 기록되므로, 체크포인트를 수행하면 디스크 상에서 로그와 데이터베이스의 내용이 일치하게 됨

 체크포인트 작업이 끝나면 로그에 [checkpoint] 로그 레코드가 기록됨

 일반적으로 체크포인트를 10~20분마다 한 번씩 수행함

9.3 회복(계속)

(42)

 체크포인트를 할 때 수행되는 작업

 수행 중인 트랜잭션들을 일시적으로 중지시킴. 회복 알고리즘에 따라서는 이 작업이 필요하지 않을 수 있음

 주기억 장치의 로그 버퍼를 디스크에 강제로 출력

 주기억 장치의 데이터베이스 버퍼를 디스크에 강제로 출력

 [checkpoint] 로그 레코드를 로그 버퍼에 기록한 후 디스크에 강제로 출력

 체크포인트 시점에 수행 중이던 트랜잭션들의 ID도 [checkpoint] 로그 레코드에 함께 기록

 일시적으로 중지된 트랜잭션의 수행을 재개

9.3 회복(계속)

(43)

9.3 회복(계속)

예: 체크포인트를 하지 않았을 때

그림 9.19는 시스템이 다운된 후에 재기동되었을 때 회복 모듈이 디스크에 저장되어 있는 로그 레코드를 조사하여 얻은 것. 트랜잭션 T0, T1, T3, T4, T5는 재수행. 트랜잭션 T2, T6은 취소.

(44)

9.3 회복(계속)

예: 체크포인트를 했을 때

그림 9.20도 디스크에 저장되어 있는 로그 레코드를 조사하여 얻은 것.

트랜잭션 T0, T1, T3은 무시. 트랜잭션 T4, T5는 재수행. 트랜잭션 T2, T6은 취소.

참조

관련 문서

 authors와 books를 authors의 surname 값과 books의 name 값이 같은 자료를 한 행으로 하여 합친다... 사용예를

• 사람들의 탄핵을 받아 법정에 선 그녀는 신들이 재판 관으로 나오자 슈이타가 자신과 동일 인물이라는 사실 을 고백함.. • 착하게는 살아가기가 힘들다는 그녀의 호소를

집 안쪽에 있는 공원처럼 넓은 정원에는 본채와 직각으로 날개처럼 붙여 지어진 사랑채 건물이 있고 그 그 림자는 흰색과 초록색 타일이 모눈종이처럼 배열된 복도를

- 하나투어가 온라인 상품을 직접 판매를 할 경우 대리점 업체와 경쟁하는 구도 가 되며 도매여행의 사업모델과도 상충되며, 대리점의 불만요소가 될 수 있음 -

그러나 점이 중심선에 대하여 한쪽에만 연속해서 나타날 경우(run), 특히 점이 7개 이상 연속 한 쪽에 몰리는 경우 이상원인이

• t-분포는 표준정규분포보다 분산이 크므로 표준 정규분포와 비슷하나 표준정규분포보다 양쪽 꼬 리부분이 두텁고 가운데 부분의 높이가 낮다... 이것이 단점이기

 항상소득( 평균장기소득 )은 안정적이고 부의 통화수요에 대한 영향은 경기변동에 따라 같이 변동하지 않는다. – 따라서 통화보유의 동기는 통화와

편심 축하중이나 풍하중과 같은 수평하중이 작용시, 기둥의 단면 일부에 인장력을 발생 시키기도 하나 주로 압축력이 그 거동을 지배한다.