ㅎㅎ

중요하지만 쵸큼은 헷갈리던 개념에 대해서

정리해보고자 한닷 '-'

 

정리해놓고 내가 다시보는게 중요하거덩여,,, RGRG,,


보통 4가지 레벨로 구분한다.

1. Read Uncomitted

2. Read Committed

3. Repeatable Read

4. Serializable 

 

한가지씩 정리해보고자 한닷 ^_^

사실 알면 간단하다..(자주하는말)

 

 

2. Read Uncommitted

transaction이 끝나지 않은 상황에서 다른 transaction이 변경한 내용에 대한 조회가 가능하다.

DB의 일관성 유지 할 수 없다.

 

다른 transaction에서 중간에 data를 변경하면 변경된 값 그대로 조회가 된다는 것이다.

 

dirty read 현상이 발생한다. transaction이 완료되지 않았는데 다른 transaction에서 볼 수 있는 현상이다.

 

 

2. Read Comitted

조회시, data에 대한 shared lock이 된다

commit이 된 data에 대해 조회가 된다. 하지만 어떠한 사용자가 어떠한 데이터를 변경하는 동안 

다른 transaction은 접근 할 수 없어 대기한다.

변경한 데이터가 commit되고 난 이후 접근 가능하다.

 

실제 테이블  값을 가져오는 것이 아니라 Undo 영역에 백업된 레코드에서 값을 가져온다.

 

 

3. Repeatable Read

transaction이 범위내에서는 조회한 데이터의 내용이 항상 동일함을 보장해준다.

 

Mysql에서는 transaction마다 트랜잭션 ID를 부여하여 트랜잭션id보다 작은 트랜잭션 번호에서 변경한것만 읽게된다.

 

undo 공간에 백업해두고 실제 레코드 값을 변경한다.

이러한 방식을 MVCC(Multi Version Concurrency Control)이라고 부른다.

 

insert시에는 값이 들어간건 보인다,,그래서 쓰기 잠금을 걸어야한다.

4. Serializable

모든 동작이 직렬화 되어 작동한다. Repeatable 와 다르게 insert를 하여도 작동하지 않는다.

성능 측면에서는 동시 처리성능이 가장 낮다.

거의 사용되지 않는다.

 

 

 

 

 

 

 

 

 

 

 

 

 


https://medium.com/@wonderful.dev/isolation-level-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-94e2c30cd8c9

 

Isolation level 이해하기

Isolation level이란 트랜잭션에서 일관성이 없는 데이터를 허용하는 수준을 이야기합니다.

medium.com

 

https://nesoy.github.io/articles/2019-05/Database-Transaction-isolation

 

트랜잭션의 격리 수준(isolation Level)이란?

 

nesoy.github.io

 

'DEVELOP > DB' 카테고리의 다른 글

[postgreSql] pg_dump 하는 방법  (0) 2021.03.15
[DB] postgreSql Centos7에 설치 및 설정하기  (0) 2020.08.24
[mySql] 계정 생성 및 권한 설정  (0) 2020.05.25
[MariaDB] general log 설정하기  (0) 2020.05.25
DB (mysql) 설정 변경  (0) 2020.03.13

+ Recent posts