데지덤

  1. 데이터관련 직무와 자격
    1. 데이터베이스 직무

    2. 데이터베이스 자격

  2. 데이터관련 학습방법
    1. 데이터베이스 개론 학습

    2. DBMS 학습

    3. 읽어볼만한 DB책

  3. 최신동향과 유명한 Things
    1. DB최신동향

    2. 데이터로 유명한 Things

  4. 데이터베이스 개념
    1. 데이터베이스 개념

    2. DBMS

    3. 데이터베이스 개발과운영

  5. 데이터베이스 설계(1/2)
    1. 데이터표준

    2. 데이터모델링

    3. 데이터모델 디자인패턴

  6. 데이터베이스 설계(2/2)
    1. 프로세스및상관모델링

    2. 정규화

    3. 반(역)정규화

    4. DB물리설계

  7. 인덱싱과 DB프로그래밍
    1. 인덱스와 해싱

    2. 관계연산

    3. DB언어

    4. SQL

    5. 데이터베이스 미들웨어

  8. 데이터베이스 운영
    1. 트랜잭션

    2. 병렬처리

    3. 데이터베이스 복구

    4. 데이터베이스 성능

    5. 병행제어(동시성제어)

  9. 분석계 및 빅데이터기술
    1. 데이터웨어하우스

    2. 데이터마이닝

    3. 빅데이터기술

  10. 데이터거버넌스
    1. 데이터거버넌스

    2. 데이터베이스 감리/진단

  11. 데이터베이스 종류와 보안
    1. 데이터베이스 종류

    2. 데이터베이스 보안

  12. DBMS
    1. 오라클

    2. SQL Server

    3. DB2

    4. Sybase

    5. Altibase

Isolation Level

개념
병행 수행되는 트랜잭션들 간에 허용될 수 있는 간섭의 정도

1. Isolation Level에 대한 개요

  가. Isolation Level의 정의
   - 병행 수행되는 트랜잭션들 간에 허용될 수 있는 간섭의 정도

  나. 직렬성의 의미
   - 모든 트랜잭션들이 Serializable에서 수행된다면(2PLP), 직렬성을 보장함

 

2. 직렬성을 위반하는 가지와 이것을 컨트롤하는 독립성 레벨

  가. 직렬성 위반 내용

직렬성 위반 내용

설명

비고

부정 판독

(dirty read)

트랜잭션 T1이 특정 행(ROW)의 갱신을 수행하고 난 후, T2가 그 행을 검색한 뒤 T1이 취소된다고 가정한다면 트랜잭션 T2는 더 이상 존재하지 않는, 그리고 결코 존재하지 않았던 행을 본 것이 된다

 

비반복 판독

(nonrepeatable read)

트랜잭션 T1이 한 행을 검색하고 T2가 그 행을 갱신한 뒤 T1이 동일한 행을 다시 검색한다고 가정하면, 트랜잭션 T1은 “동일”한 행을 두번 검색한 것이지만 두개의 다른 값을 보게된다

 

가상 판독

(phantom read)

트랜잭션 T1이 특정 조건을 만족하는 모든 sgod을 검색한다고 하자. 그런 다음 트랜잭션 T2는 동일한 조건을 만족하는 새로운 행을 삽입한다고 할 때 트랜잭션 T1이 검색 요구를 반복한다면, 이전에는 존재하지 않았던 한 행을 보게된다.

 

 

  나. SQL독립성레벨(아래로 갈수록 레벨 큼)

종류

부정 판독

(ditrty read)

비반복 판득

(nonrepeatable read)

가상 판독

(phantom read)

READ UNCOMMITTED

허용

허용

허용

READ COMMITTED

불가

허용

허용

REPEATABLE READ

불가

불가

허용

SERIALIZABLE

불가

불가

불가

 

 

3. Phantom Read현상과 해결방안

  가. Phantom Read현상

 

  나. Phantom Read에 대한 해결방안

   - SERIALIZABLE을 통해 해결함.

 . SERIALIZABLE문은 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽을 수 없음.

 . 현재 트랜잭션이 읽은 데이터는 현재 트랜잭션이 완료될 때까지 다른 트랜잭션에서 수정할 수 없음

 . 다른 트랜잭션은 현재 트랜잭션이 완료된 다음에야 현재 트랜잭션의 문이 읽은 키 범위 내의 키 값을 가진 새 행을 삽입할 수 있음

 

Use the SERIALIZABLE isolation level, or the SERIALIZABLE optimizer hint, to prevent phantom reads.

SELECT OrderID, ProductID, UnitPrice

FROM [Order Details] (SERIALIZABLE)

WHERE ProductID = 37

 

댓글