[DE] SQL(2)

박경국·2022년 1월 22일
0

Data Engineering

목록 보기
5/16
post-thumbnail

관계형 데이터베이스에는 트랜잭션과 ACID라는 특징이 있습니다. 데이터를 무결하게 만든느 특징입니다.

1. 트랜잭션(transaction)

1) 트랜잭션이란?

  • 트랜잭션은 데이터베이스의 상태를 변화시키는 작업의 모음입니다.
  • 트랜잭션을 구성하는 작업 중 하나라도 실패하면 그 작업의 모음인 트랜잭션은 실행되어서는 안됩니다.

  • A가 B에게 100 만원을 입금해야한다라는 작업은 5개의 작업으로 구성됩니다. 위 작업 중 어느 하나라도 실패된다면, 위 트랜잭션은 실행되어서는 안됩니다.

2) COMMIT과 ROLLBACK

  • 앞서 설명한 트랜잭션은 확정 신호를 알려주어야 데이터베이스에 반영됩니다.
  • 확정 신호를 보내지 않으면 데이터베이스에 변화가 반영되지 않습니다.
  • 이 확정 신호를 commit이라고 합니다.
INSERT INTO user VALUES ('id1', 'user1');
INSERT INTO user VALUES ('id2', 'user2');

COMMIT; #COMMIT이 INSERT 쿼리를 데이터베이스에 반영하게 합니다.
  • ROLLBACK은 COMMIT과 반대되는 개념입니다.
  • COMMIT한 내용을 취소한다는 명령어입니다. Rollback을 하면 지금까지 수행한 내용을 모두 취소하겠다는 의미가 됩니다.
#아래 쿼리를 실행하면 id4, user4만 반영됩니다.

INSERT INTO user VALUES ('id3', 'user3');
ROLLBACK;
INSERT INTO user VALUES ('id4', 'user4');
COMMIT;

2. ACID

  • ACID는 트랜잭션에 기반한 관계형 데이터베이스의 주요 특징입니다.
  • Atomicity, Consistency, Isolation, Durability의 약자입니다.

1) Atomicity

  • Atomicity(원자성)은 트랜잭션을 구성하는 작업들은 전부 성공하거나 전부 실패해야 한다는 의미입니다.
  • 특정 쿼리를 실행했을 때 부분적으로 실패하는 부분이 있다면 전부 실패하게 됩니다.

2) Consistency

  • 데이터베이스의 일관성에 대한 의미입니다.
  • 트랜잭션 이전과 이후의 데이터베이스의 제약이나 규칙은 변화가 없어야 합니다.

3) Isolation

  • 고립성은 하나의 트랜잭션이 다른 트랜잭션과 독립되어야 한다는 의미입니다.
  • 동시에 여러 개의 트랜잭션이 수행될 때에 각 트랜잭션은 고립되어 있습니다.
  • 이 고립성 때문에 동시에 실행되는 트랜잭션도 내부의 우선순위에 따라 각각 실행되게 됩니다.

4) Durability

  • 지속성은 하나의 트랜잭션이 성공적으로 수행되었다면 해당 트랜잭션에 대한 로그가 남는다는 의미입니다.
  • 런타임 오류나 시스템 오류가 발생해도 해당 기록은 영구적으로 기록됩니다.

0개의 댓글