lost update : 두개의 세션에서 동시에 작업 할때 한 세션에서 업데이트 된 값이 다른 세션에서 적용되지 않음
표준 SQL에서 lost update가 적용되는 격리도는 없다. 사실 신경 쓸 필요 없는 개념이다.
dirty read : 한 세션에서 적용된, commit되지 않은 값이 다른 세션에서 보여짐
no-repeatable read : 한 세션에서 같은 쿼리문을 두 번 실행할 때 그 사이에 다른 세션에서 수행된 결과 때문에 상이한 결과를 나타냄
phantom read : 한 세션에서 특정한 범위의 레코드를 두 번 불러 올때 처음에 없었던 레코드가 새로 생김. repeatable read의 개념과 비슷하지만 수정, 삭제 되는 것과 새로 생기는 것을 구분하여 다르게 부른다.
ISOLATION LEVEL
Transaction의 Isolation Level 설정
SET TRANSACTION isolation_mode;
SET TRANSACTION ISOLATON LEVEL isolation_mode;
READ UNCOMMITTED : no lost update, dirty read
commit되지 않은 값도 다른 세션에서 적용되어 진다.
READ COMMITTED : no lost update, no dirty read
말그대로 committed된 값만 적용한다.
REPEATABLE READ : no lost update, no dirty read, repeatable read
한 세션에서 특정한 값을 읽으면 다른 세션에선 그 값에 대한 수정 및 삭제를 못하게 한다.
SERIALIZABLE : no lost update, no dirty read, repeatable read, no phantom read
한 세션에서 읽혀진 row가 변경될 수 있는 값에 대해서는 새로운 레코드 삽입조차 못하게 막아 버린다. 오라클에서만 있는 READ ONLY를 제외하면 가장 제약이 심한 레벨이다.
AUTO COMMITION
Oracle : SET AUTOCOMMIT {ON|OFF}
default : OFF
MySql : SET AUTOCOMMIT = {TURE|FALSE}
default : TRUE
'IT 이론 > 데이터베이스' 카테고리의 다른 글
[데이터베이스&파일처리] B+트리의 구조 (0) | 2013.01.12 |
---|---|
[데이터베이스] Merge Statement (0) | 2012.12.12 |
[데이터베이스] 부질의(subquery), 중첩질의(nested query) (0) | 2012.11.30 |
[데이터베이스] SELECT Statement (0) | 2012.11.12 |
[데이터베이스] INSERT, DELETE, UPDATE Statement (0) | 2012.11.11 |
댓글