-
트랜잭션이란 무엇이고 원자성, 일관성, 고립성, 지속성이란 무엇인지 설명해주실 수 있을까요?목터뷰 2023. 8. 24. 21:05
트랜잭션
Transaction데이터베이스 관리 시스템에서 데이터를 처리하는 단위를 의미한다.
정보를 관리하고 유지하기 위해 필요한 작업들을 논리적으로 묶어 처리하는 방법으로 데이터의 일관성과 안정성을 보장하기 위해 사용된다.
새 게시글 작성시 글 작성insert-작성글 불러오기select 두 쿼리문이 필요한데 도중에 끊기지 않도록 두 작업을 묶어주는것. 두 작업을 묶어줌으로서 작성만 되고 조회가 안될때 다시 작성하는 일을 막아 데이터 안정성에 도움을준다.
트랜잭션에는 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) 4가지 속성이 있다.
앞머리 따서 ACID라고도 부름
1. 원자성 Atomicity
원자성> 더 이상 쪼갤수 없는 최소 단위
트랜잭션은 모든 작업 완료 or 모든 작업 취소 중 하나의 상태로 유지되어야한다.
트랜잭션이 성공적으로 끝나면 commit, 반대로 도중에 끝난다면 Rollback 된다
작업을 절대적인 하나의 단위로 묶어 오작동시 원인을 쉽게 찾을수 있게 한다.
2. 일관성 Consistency
트랜잭선이 실행되는 데이터베이스의 결과상태는 항상 일관된 상태를 유지해야한다.
시스템이 가지고 있는 고정요소는 트랜잭션 완료 전/후 상태가 같아야한다.
3. 고립성(독립성) Isolation
여러 트랜잭션이 작동 될때 트랜잭션은 다른 트랜잭션에서 영향을 받으면 안된다.
하나의 묶음처럼 다른 단위를 건들지 않음. 하나의 트랜젝션이 끝날때까지 다른 트랜잭션의 결과를 참조 할 수 없다.
4. 지속성(영구성) Durability
트랜잭션이 성공적으로 완료되 커밋면 반영된 데이터베이스는 영구적으로 반영되어야한다.
컴퓨터가 종료 된다하더라도 데이터베이스에 저장을 되어 있으니 저장된거라고 본다
활동(Active) : 트랜잭션이 실행중인 상태
실패(Failed) : 트랜잭션 실행에 오류가 발생하여 중단된 상태
철회(Aborted) : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태
부분 완료(Partially Committed) : 트랜잭션의 마지막 연산까지 실행했지만, Commit 연산이 실행되기 직전의 상태
완료(Committed) : 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태간단하게 적자면 트랜젝션은 모 아니면 도다.
spring적 관점
더보기@Transactional
작업 시간이 긴 메소드를 한 단위로 묶어 실행 시켜주는 에너테이션
위 함수는 1. 게시글과 채팅방 유무 확인
2. 예외처리(만원시 입구컷, 중복참여방지)
3. 유저 채팅방 초대
4. 레포지터리 저장
같이 많은 실행을 하는데(이게 맞나..?) 유저초대는 됬으나(3번) db에 저장(4번)되지 않는 불상사를 막기 위해 사용된다.
주로 PUT 같은 수정게시글(작성자 확인-새 글 받아옴-덮어쓰기)에 많이 사용됌!
참고
'목터뷰' 카테고리의 다른 글
Base64 인코딩 (0) 2023.09.01 TCP 3 way handshake란 무엇인지 설명해주실 수 있을까요? (0) 2023.08.28 인덱스란 무엇이고 일반적인 원리는 어떠한지 설명해실 수 있을까요? (0) 2023.08.22 Annotation이란 무엇이고 구체적으로 어떤 것이 있는지 예시를 들어 설명해주실 수 있을까요? (0) 2023.08.14 [목터뷰]Call by reference란 무엇이고 보통 어떻게 쓰이나요? (0) 2023.08.08