Section3 - N313

mochi·2022년 12월 18일
0

부트캠프

목록 보기
8/9

트랜잭션


트랜잭션

  • 데이터베이스의 상태를 변화시키는 일련의 작업들에 대한 연속처리단위
  • 한 개 이상의 DML(INSERT, DELETE, UPDATE)을 실행하면 트랜잭션이 시작되었다고 한다.

트랜잭션의 예시(송금)
송금과정에서 하나라도 실패하면 모든 과정이 실패 처리 되어야 한다.



Commit, Rollback


Commit

  • 트랜잭션 과정 중 데이터베이스에 전송하는 확정 신호
    CREATE TABLE user (
    	id varchar(10) primary Key,
    	name varchar(10)
    );
    >
    INSERT INTO user VALUES ('id1', 'user1');
    INSERT INTO user VALUES ('id2', 'user2');
    
    COMMIT; --commit하여 변경사항 전달

Rollback

  • 트랜잭션 과정 중 지금까지 수행한 내용을 모두 취소하는 의미
    INSERT INTO user VALUES ('id3', 'user3');
    ROLLBACK; --변경사항 취소
    INSERT INTO user VALUES ('id4', 'user4');
    COMMIT; --변경사항 반영
    
    
    => 'id4'만 입력됨


ACID

트랜잭션의 안전성을 보장하는 성질.
Atomicity, Consistency, Isolation, Durability로 이루어져 있다.


Atomicity(원자성)

  • 트랜잭션의 작업들은 모두 성공하거나, 모두 실패하여야 한다.
    - 위의 송금 예시처럼 과정 중 일부만 실패하더라도 전체 과정은 실패처리 되어야 한다.

Consistency(일관성)

  • 트랜잭션 이전과 이후의 DB 유효성은 같아야 한다.
  • 제약, 규칙에 의거한 DB이어야 한다.
    • PRIMARY KEY, NOT NULL등

Isolation(고립성)

  • 여러 트랜잭션은 모두 독립되어야 한다.
    - 동시에 여러 트랜잭션이 수행되어도 연속 실행한 것과 동일한 결과이어야 한다.

Durability(지속성)

  • 커밋 후 디스크에 저장된 DB의 상태는 유지되어야 한다.
    - 하나의 트랜잭션이 성공했다면 해당 기록은 영구적이어야 한다.
profile
모치

0개의 댓글