나의 개발 성장일지

DB격리수준 본문

개인 공부/스프링부트 개념정리

DB격리수준

qkq5821 2022. 11. 24. 02:01

1.트랜잭션 :일이 처리가 되기위한 가장 작은 단위

 

1-1서비스->여러트랜잭션이 모인 트랜잭션

1-2 오라클은 COMMIT된거만 READ를 한다.

 

2  트랜잭션이끝나기전 데이터요청

2-1 A가 트랜잭션을 시작하고 UPDATE를하면 COMMIT이 되기전까지 11번에 임꺽정으로만 SELECT가능하다

2-2 현재까지 COMMIT된  데이터를 UNDO영역에 한번더 저장한다

 2-3 B는 UNDO영역에서 데이터를 구한다.

 

3. 부정합

3-1 트랜잭션이 실행되는동안 동일한 select시 같은데이터가나와야함

3-2 동일한 SELECT동안 데이터가 보였다안보였다->팬텀리드 

 

 

 

 

4.MYSQL이 부정합을 방지하는 방법 ->REPEATABLE COMMIT

 

4-1 READ COMMIT은 UNDO영역에 COMMIT된 데이터를 가져온다

4-2  REPEATABLE COMMIT 은 UNDO영역에 자기보다 앞에 트랜잭션이 넣은데이터만 가져온다

->자기트랜잭션 순서보다 먼저앞선애들데이터만 가져옴

 

5스프링에서 정합성 지키기

 

5-1 @Transactional을 붙이면 REPEATABLE COMMIT을 따른다.

 

 

'개인 공부 > 스프링부트 개념정리' 카테고리의 다른 글

스프링 작동원리복습  (0) 2022.11.24
스프링부트의 트랜잭션  (0) 2022.11.24
Ajax를 사용하는이유  (0) 2022.11.24
화면구현하기  (0) 2022.11.23
Json데이터로 통신하기  (0) 2022.11.23