트랜잭션
- 데이터베이스의 상태를 변화시키는 일련의 작업들에 대한 연속처리단위
- 한 개 이상의 DML(INSERT, DELETE, UPDATE)을 실행하면 트랜잭션이 시작되었다고 한다.
트랜잭션의 예시(송금)
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하여 변경사항 전달
INSERT INTO user VALUES ('id3', 'user3'); ROLLBACK; --변경사항 취소 INSERT INTO user VALUES ('id4', 'user4'); COMMIT; --변경사항 반영 => 'id4'만 입력됨
트랜잭션의 안전성을 보장하는 성질.
Atomicity, Consistency, Isolation, Durability로 이루어져 있다.
Atomicity(원자성)
- 트랜잭션의 작업들은 모두 성공하거나, 모두 실패하여야 한다.
- 위의 송금 예시처럼 과정 중 일부만 실패하더라도 전체 과정은 실패처리 되어야 한다.
Consistency(일관성)
- 트랜잭션 이전과 이후의 DB 유효성은 같아야 한다.
- 제약, 규칙에 의거한 DB이어야 한다.
- PRIMARY KEY, NOT NULL등
Isolation(고립성)
- 여러 트랜잭션은 모두 독립되어야 한다.
- 동시에 여러 트랜잭션이 수행되어도 연속 실행한 것과 동일한 결과이어야 한다.
Durability(지속성)
- 커밋 후 디스크에 저장된 DB의 상태는 유지되어야 한다.
- 하나의 트랜잭션이 성공했다면 해당 기록은 영구적이어야 한다.