반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 백준
- ASF-110
- Ultimate Search
- 백트래킹
- C++
- 취준
- SRE
- python3
- 자소서
- 알고리즘 종류 정리
- 프로콘 갈림현상
- Pro-Con
- algorithm
- 알고리즘
- Python
- 제노블레이드 2
- 프로그래머스
- 네이버 검색 시스템
- LeetCode
- 프로콘
- Github
- programmers
- baekjoon
- Algorithmus
- DP
- git
- 리트코드
- 코딩테스트
- GitHub Desktop
- 격리수준
Archives
- Today
- Total
산타는 없다
트랜잭션(Transaction) 격리 수준(Isolation Level) 본문
반응형
동시에 여러 트랜잭션이 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터에 접근 여부를 결정하는 수준이다.
- READ UNCOMMITTED : 각 트랜잭션에서 변경 내용을 COMMIT하거나 ROLLBACK 여부에 상관 없이 다른 트랜잭션에서 값을 읽을 수 있다. DIRTY READ 현상 발생
- READ COMMITTED(1단계) : 트랜잭션에서 변경 내용이 있지만 COMMIT이나 ROLLBACK 전에 볼 때 실제 테이블이 아닌 Undo 영역에 백업된 레코드 값을 봄
하나의 트랜잭션내에서 똑같은 쿼리를 실행했을 때 항상 같은 결과를 가져와야하는데 COMMIT을 해버리면 다른 결과가 나오기 때문에 REPEATABLE READ의 정합성에 어긋난다. - REPEATABLE READ(2단계) : 트랜잭션마다 트랜잭션 ID를 부여하여 트랜잭션 ID 보다 작은 트랜잭션 번호에서 변경한 것만 읽는다. Undo 공간에 백업해두고 실제 레코드 값을 변경. MVCC라고 부른다.
- SERIALIZABLE(3단계) : 가장 단순한 격리 수준이지만 가장 엄격한 격리 수준. 트랜잭션이 실행되기 전에 커밋된 내용만 조회할 수 있다.
- 이상현상
- Dirty Read : 어떤 트랜잭션에서 아직 실행이 끝나지 않은 다른 트랜잭션에 의한 변경 사항을 보게 되는 경우. 만약 원래 트랜잭션에서 그 변경 사항을 롤백하면 그 데이터를 읽은 트랜잭션은 dirty 데이터를 가지고 있다고 말한다.
- Non Repeatable Read : 다른 트랜잭션에서 변경한 내용 때문에 한 트랜잭션에선 항상 같은 결과를 가져와 하는 정합성에 어긋나는 상황
- Phantom Read : 같은 쿼리를 두번 수행 시 첫번째 실행시에 없던 레코드가 갑자기 나오거나 사라지는 현상
Isolation Level | Drity Read | Non Repeatable | Phantom Read |
Read Uncommitted | 가능 | 가능 | 가능 |
Read Committed | 불가능 | 가능 | 가능 |
Repeatable Read | 불가능 | 불가능 | 가능 |
Serializable | 불가능 | 불가능 | 불가능 |
반응형
'Computer Science > 데이터베이스' 카테고리의 다른 글
[MySql] SQL select Query 실행 순서 (0) | 2021.07.14 |
---|---|
데이터베이스 B/B+ tree 인덱스 구조 (0) | 2021.05.17 |
데이터베이스의 인덱스 알고리즘 (0) | 2021.05.14 |
MySql의 스토리지 엔진 비교 (0) | 2021.05.13 |
MySql의 인덱스 자료구조 (0) | 2021.05.13 |
Comments