제1장  트랜잭션 관리

제1절 트랜잭션의 정의

-      전부 완료하거나 또는 전부 복귀되어야 하는 작업의 논리적 단위이다.

-      한번에 수행되어야 할 데이터베이스 연산들의 일련의 연속

-      동시성 제어와 회복을 위한 기법들의 근본이다.

 

제2절 트랜잭션의 특성

데이터 무결성을 보장하기 위해 DBMS는 다음의 ACID 성질을 유지해야 한다.

 

제1항 원자성(Atomicity)

     트랜잭션의 모든 연산 수행 결과가 모두 데이터베이스에 반영(All) 되거나 또는 전혀 반영되지 않아야(Nothing) 되는 성질이다.

     회복관리자에 의해서 보장된다.

 

(1) COMMIT(완료)

트랜잭션의 성공적인 완료로써트랜잭션의 변경 작업이 데이터베이스에 영구적으로 반영된다.

(2) ROLLBACK(복귀)

트랜잭션을 처음 상태로 복귀하는 것으로써데이터베이스에 대한 트랜잭션 변경 작업이 취소된다. (undo)

 

제2항 일관성(Consistency)

     트랜잭션의 실행이 데이터베이스를 하나의 일관된 상태에서 또 다른 일관된 상태로 변환하는 특성이다.

     트랜잭션이 성공적으로 실행이 완료되면 데이터베이스는 모순없이 일관성이 보존되는 특성이다.

     트랜잭션이 수행 중에는 데이터베이스가 일시적으로 비일관성에 놓여질수 있다.

     무결성 관리자와 동시성 제어 관리자에 의해서 보장된다.

 

제3항 고립성(isolation)

     한 트랜잭션이 하나의 데이터 처리를 완료할 때까지 자신이 변경한 데이터의 내용을 다른 트랜잭션이 참조할 수 없도록 보장하는 성질이다.

     다수의 트랜잭션이 동시에 실행될 수 있다 하더라도 각 트랜잭션의 연산 수행의 중간 결과를 다른 트랜잭션이 이용하지 못하도록 한다.

     동시성 제어 관리자에 의해서 보장된다.

 

제4항 지속성(Durability)

     트랜잭션이 성공적으로 완료된 후에 트랜잭션에 의해 이루어진 데이터베이스의 변경은 시스템 장애(Failure)가 발생한다 하더라도 유지되어야 하는 성질이다.

     회복 관리자에 의해서 보장된다.

 

제3절 낮은 단계(하위 수준고립성 수준에서 발생하는 현상들

제1항 부정판독 (Dirty Read)

다른 트랜잭션에 의해 커밋(commit)되지 않은 수정된 데이터를 참조하는 것을 의미한다수정을 가한 트랜잭션이 롤백(rollback)된다면 그 데이터를 참조한 트랜잭션은 일관되지 않은 상태에 놓이게 된다.

 

제2항 비반복 가능 판독(Non-Repeatable Reads)

한 트랜잭션에서 같은 데이터를 두 번 이상 읽을 때그 중간에 다른 트랜잭션이 값을 갱신하거나 삭제함으로 읽은 값들이 서로 다르게 되는 현상이다.

 

 

제3항 팬텀판독(Phantom Read)

한 트랜잭션에서 같은 데이터를 두 번 이상 읽을 때그 중간에 다른 트랜잭션이 값을 추가함으로써 첫번째 쿼리에서 없던 유령(Phantom) 레코드가 나타나는 현상이다.

 

 

 

제4절 트랜잭션 고립성 수준(Transaction Isolation Level) – ANSI/ISO SQL 표준에서 정의

제1항 판독 비완료(ReadUncommitted)

아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용한다.

 

제2항 판독 완료(Read Committed)

트랜잭션이 커밋되어 완료된 데이터만 다른 트랜잭션이 읽도록 허용함으로써 부정 판독 (Dirty Read)를 방지해 준다.

 

제3항 반복 가능 판독(Repeatable Read)

오직 완료된 레코드만이 읽혀질 수 있으며같은 레코드의 반복적인 판독은 동일한 값을트랜잭션 반환한다첫번째 있던 레코드가 삭제되거나 값이 갱신되는 현상을 방지함으로써 비반복 가능 판독(Non-Repeatable Read)를 방지해 준다.

 

제4항 직렬 가능(Serializable)

오직 완료된 레코드만이 읽혀질 수 있으며같은 레코드의 반복적인 판독은 동일한 값을트랜잭션 반환한다첫번째 있던 레코드가 삭제되거나 값이 갱신되는 현상을 방지함으로써 비반복 가능 판독(Non-Repeatable Read)를 방지해 준다또한 새로운 레코드가 나타나지도 않음으로써팬텀 판독(Phantom Read)도 방지해 준다.

 

 

감리사문제)

SQL 1992(SQL2) 4가지 격리 수준(isolation level) 중에서 한 트랜잭션 내에서 동일한 데이터를 두 번 읽을 때서로 다른 값을 읽는 경우가 발생할 수 있는 격리 수준을 모두 고르시오. (2개 선택)

1. read committed            2. Serializable     3. Repeatable read           4. Read uncommitted

+ Recent posts