위로 아래

트랜잭션

트랜젝션(Transaction)

  1. 데이터베이스의 상태를 변화시키기 위해 수행(INSERT, SELECT, UPDATE, DELETE)하는 작업의 단위
  2. 트랜잭션의 범위는 최소화하는 것이 좋다. 데이터베이스의 커넥션 수는 제한적인데, 트랜잭션이 길어서 커넥션 사용 기간이 길어지면, 다른 로직에서 커넥션을 기다리게 될 수도 있다. 

 

 


ACID

원자성 (Atomicity)

  1. 트랜잭션이 데이터베이스에 모두 반영되던지, 아니면 전혀 반영되지 않아야 한다.
  2. 트랜잭션의 모든 명령은 반드시 완벽하게 수행되어야 하며, 어느 한 지점에서라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.

 

일관성 (Consistency)

  1. 트랜잭션의 작업 처리 결과가 항상 일관되어야 한다.
  2. 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 수행 후의 상태가 같아야 한다.
  3. 트랜잭션 도중에 데이터베이스가 변경되더라도, 변경된 데이터가 아니라 처음 데이터로 트랜잭션이 진행되어야 한다.

 

독립성 (Isolation)

  1. 둘 이상의 트랜잭션을 동시에 실행하고 있을 경우, 어떤 하나의 트랜잭션이 다른 트랜잭션의 연산에 끼어들 수 없다.
  2. 수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.

 

지속성 (Durability)

  1. 트랜잭션이 성공적으로 완료되었을 경우, 결과가 영구적으로 반영되어야 한다.

 

 


Commit, Rollback, Savepoint

Commit

  1. 하나의 트랜잭션이 끝났음을 알리는 연산.
  2. 수행했던 트랜잭션을 로그에 저장한다. 

 

Rollback

  1. 트랜잭션을 처음부터 다시 시작하거나 트랙잭션의 연산된 결과를 부분적으로 취소시킨다.

 

Savepoint

  1. 트랜잭션 사이에 있으면, 롤백 시 savepoint까지만 롤백된다.

 

예시

더보기
INSERT INTO dept1
VALUES(98,'인사과','서울');

SAVEPOINT A;

INSERT INTO emp (empno, ename, deptno)
VALUES(7777,'못난이',30);

ROLLBACK TO A;

SELECT * FROM dept1;
SELECT empno, deptno FROM emp;

ROLLBACK;