반응형
SMALL
[1] Transaction
(1) Transaction 정의 ; Tx
더이상 나눌 수없는 작업의 단위
계좌 이체시 A 계좌 : 출금 / B 계좌 : 입금 하는 일련의 과정이 한 묶음으로 처리가 되어야한다
(2) Transaction 속성 : ACID
- 원자성 Atomicity : 나눌수 없는 하나의 작업으로 다뤄져야한다
- 일관성 Consistency : Tx 수행 전과 후가 일관된 상태를 유지해야한다
- 고립성 Isolation : 각 Tx는 독립적으로 수행되어야한다
- 영속성 Durability : 성공한 Tx의 결과는 유지되어야한다
(3) commit & rollback
커밋 commint : 작업 내용을 DB에 영구적으로 저장한다
롤백 rollback : 최근 변경 사항을 취소하고 마지막 커밋으로 복귀한다
(4) 자동커밋 & 수동커밋
자동커밋 : 명령 실행 후 자동으로 커밋이 수행한다 . rollback 불가
수동커밋 : 명령 실행 후 "SET autocommit" 같이 명령을 내려야만 커밋이 수행한다.
[2] isolation level
(1) isolation level 정의
각 Tx를 고립시키는 정도에 따라 단계를 나눈다
프로그램 실행중 여러 트랜잭션이 발생하고 그들이 얼마나 독립적으로 활동하는지를 지정한다
(2) isolation level 단계
프리 | READ UNCOMMITED | dirty read | 커밋되지 않은 데이터도 읽기 가능 |
덜 프리 | READ COMMITED | phantom read | 커밋된 데이터만 읽기가능 |
기본 | REPEATABLE READ | Tx가 시작된 이후 변경은 무시된다 현재 트랜잭션이 사용중이라면 값을 변경되더라도 변경이 적용되지 않는다 |
|
완전독립 | SERIALIZABLE | 한번에 하나의 Tx만 독립적으로 수행한다 성능은 떨어지겠지만 데이터 품질은 올라간다 트랜잭션A가 실행 중 트랜잭션 B가 대기하고 트랜잭션 A가 실행이 종료 된 후 트랜잭션 B가 실행된다 |
트랜잭션의 관리를 위해 어노테이션이나 xml 설정할수 있어 개발자가 매번 상황에 맞는 코드를 작성할 필요가 없게 설계되어있다
[3] isolation level 실습
(1) DB 데이터 + 인텔리제이의 isolation level 설정
(2) STS4
오토커밋 off
테스트 성공
오토커밋 off
데이터값 중복으로 데이터 미입력
오토커밋 on
반응형
LIST
'🌈 백엔드 > 스프링 프레임워크' 카테고리의 다른 글
스프링_ DB 데이터 객체 DAO (0) | 2023.07.20 |
---|---|
스프링_테스트_JUnit (0) | 2023.06.28 |
스프링_AOP (0) | 2023.06.27 |
스프링_DI 의존성 주입 (0) | 2023.06.24 |
스프링_개념 개요 (0) | 2023.04.30 |