프로시저 앞부분에 항상 보던 구문, "SET TRANSACTION ISOLATION LEVEL"
평소엔 별 생각없이 복붙하면서 처리했는데요 갑자기 궁금해져서 한번 찾아봤어요.
SET TRANSACTION ISOLATION LEVEL 이문구는 격리 수준을 의미합니다.
이 문구 다음에 어느정도 격리를 할 건지에 대해서 명시를 해줘야 문장이 완성됩니다.
격리라는 것이 결국 잠금 수준을 의미하는 것이고 격리 수준은 총 5가지로 나눌 수 있습니다.
격리 수준은 위에서부터 아래로 강해진다고 합니다.
즉 READ UNCOMMITTED가 가장 약하고, SERIALIZABLE가 가장 강합니다.
제가 운영하고 있는 시스템 프로시저들은 모두 가장 약한 수준으로 코딩되어 있네요!
각 격리 수준 별로 잘 정리되어 있는 자료를 가져와봤습니다.
(출처 : http://egloos.zum.com/sweeper/v/3005129 )
격리 수준 |
커밋되지 않은 읽기 |
반복되지 않는 읽기 |
가상 |
READ UNCOMMITTED |
예 |
예 |
예 |
READ COMMITTED |
아니요 |
예 |
예 |
REPEATABLE READ |
아니요 |
아니요 |
예 |
SNAPSHOT |
아니요 |
아니요 |
아니요 |
SERIALIZABLE |
아니요 |
아니요 |
아니요 |
READ UNCOMMITTED 는 커밋되지 않는 데이터를 읽을 수 있어서 데이터 무결성을 깨뜨릴 수 있지만
동시성이 향상되는 효과가 크기 때문에 자주 사용된다고 하네요.
그래도 무결성이 중요한 데이터는 이 구문을 그대로 쓰면 안될 듯 합니다.!
'IT' 카테고리의 다른 글
[안드로이드] setonclicklistener 를 찾다가 (0) | 2018.11.23 |
---|---|
[안드로이드] Gradle (0) | 2018.11.18 |
[MSSQL] SET NOCOUNT ON/OFF 사용과 의미 (0) | 2018.08.01 |
[Python] Python numpy, matplotlib 라이브러리 설치! (1) | 2018.01.20 |
[도커] Docker 명령어 정리! (0) | 2018.01.19 |
댓글