일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- forNmae()
- 오라클 병렬처리
- vue.js
- 도커빌드
- quert
- rabbitmq 에러
- Java Reflextion API
- VUE
- 자바
- paraller
- 커스텀 로그인
- 오라클
- REDIS
- 애그리거트
- redux
- 리액트
- $emit()
- Express
- 리덕스
- exiting abnormally
- 리덕스 공식문서
- AWS
- 자료구조
- ACCESS_REFUSED
- EBS
- 컴포넌트 주도
- react
- 네임드 뷰
- 트리 회전
- .getClass()
- Today
- Total
개발정리
트랜잭션 고립 수준 본문
트랜잭션의 고립수준 이란?
-트랜잭션들 끼리 일관성 있는 데이터를 얼마나 허용할 것인지 정해놓은 수준
-고립수준이 높을수록 일관성은 보장되지만 그만큼 동시성이 떨어져 성능 하락
이상현상 종류
1.Dirty Read
-어떤 트랜잭션에서 아직 실행이 끝나지 않은 트랜잭션에 의한 변경사항을 보게 되는 경우
2.Non Repeatable Read
-어떤 트랜잭션이 같은 쿼리를 2번 실행하는데 그 사이에 다른 트랜잭션이 수정/삭제를 하여 같은 쿼리에 다른 값이 나오는 경우
3.Phantom Read
-어떤 트랜잭션이 같은 쿼리를 2번 실행하는데 그 사이에 없던 레코드가 추가되어 같은 쿼리에 다른 값이 나오는 경우
Read Uncommitted(Level 0)
-각 트랜잭션에서 변경된 내용이 commit 이나 rollback 여부에 상관없이 다른 트랜잭션에서 읽을 수 있다.
-정합성에 문제가 많은 격리 수준으로 사용하지 않는 것이 좋다.
정합성:어떤 데이터들이 서로 일치함
무결성:어떤 데이터들의 값이 정확한 상태
-Dirty Read,Non Repeatable Read,Phantom Read 발생 가능
Read Committed (Level 1)
-트랜잭션 수행이 완료되고 COMMIT된 데이터만 다른 트랜잭션에서 READ하도록 허용하는 수준
-Dirty Read 문제 발생 안함
-Non Repeatable Read,Phantom Read 발생
Repeatable Read (Level 2)
-이론상으론 특정 트랜잭션에서 읽고 있는 데이터는 다른 트랜잭션에서 수정/삭제가 불가능 하다.
-INSERT는 가능
-실제로 동작하는 방식은 자신의 트랜잭션 번호(id)보다 낮은 트랜잭션 번호에서 변경된(COMMIT)것만 읽게되고
자신의 트랜잭션보다 높은 트랜잭션에서 변경된 것은 UNDO영역에 백업된 데이터를 읽는다.
-UNDO영역에 백업된 레코드가 많아지면 성능이 떨어질 수 있다.
-Non Repeatable Read 발생 x
-Phantom Read 발생
SERIALIZABLE (Level 3)
-가장 단순하고 엄격한 격리 수준
-모든 동작이 직렬화하게 작동한다.
-특정 트랜잭션에서 읽고 있는 데이터는 다른 트랜잭션에서 수정/삭제/삽입이 불가능
-동시성 하락,성능 하락
-dirty read,Non Repeatable Read,Phantom Read 문제가 발생 안함
'CS > 데이터베이스' 카테고리의 다른 글
EXPLAIN이 뭔지 설명해줘! (0) | 2024.03.28 |
---|---|
innodb 스토리지 엔진의 잠금 (0) | 2024.02.23 |
인덱스 (0) | 2024.01.24 |
트랜잭션 (0) | 2024.01.23 |