SQLD 학습 (3-4 TCL TRANSACTION CONTROL LANGUAGE)

제우민·2022년 8월 31일
0
post-thumbnail

트랜잭션의 특성

  • 트랜잭션은 데이터베이스의 논리적 연산단위이다.

  • 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함된다. 트랜잭션은 분할할 수 없는 최소의 단위이다. 그렇기 때문에 전부 적용하거나 전부 취소한다. 즉 TRANSACTION은 ALL OR NOTHING의 개념

  • 원자성: 트랜잭션에서 정의된 연산들은 모두 성공적으로 끝나거나 모두 실패해야 한다.

  • 일관성: 트랜잭션이 실행되기 전의 데이터베이스의 내용이 잘못되어 있지 않다면 실행된 이후에서 데이터베이스의 내용에 잘못이 있으면 안된다.

  • 고립성: 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.

  • 지속성: 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

COMMIT

  • 입력한 자료나 수정한 자료에 대해서 또는 삭제한 자료에 대해서 전혀 문제가 없다고 판단되었을 경우 COMMIT 명령어를 통해서 트랜잭션을 완료할 수 있다.

  • COMMIT이나 ROLLBACK 이전의 데이터 상태
    단지 메모리 BUFFER에만 영향을 받았기 떄문에 데이터의 변경 이전 상태로 복구가능
    현재 사용자는 SELECT 문장으로 결과를 확인 가능하다.
    다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없다.
    변경된 행은 잠금이 설정되어서 다른 사용자가 변경할 수 없다.

  • COMMIT 이후의 상태
    변경 사항이 데이터베이스에 반영
    이전 데이터는 영원히 잃어버리게 된다.
    모든 사용자는 결과를 볼수 있다.
    잠금이 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다.

ROLLBACK

  • 롤백은 데이터 변경 사항이 취소되어 데이터의 이전상태로 복구되며 관련된 행에 대한 잠금이 풀리고 다른 사용자들이 데이터 변경을 할 수 있게 된다.

SAVE POINT

  • 저장점을 정의하면 롤백할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서
    SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.

  • 복잡한 대규모 트랜잭션에서 에러가 발생했을 때 SAVEPOINT까지의 트랜잭션만 롤백하고 실패한 부분에서 대해서만 다시 실행

트랜잭션 요점

  • 데이터 무결성 보장

  • COMMIT은 변경된 데이터를 테이블이 영구적으로 반영해라 라는 의미

  • ROLLBACK은 변경적으로 복귀하라는 의미

  • SAVEPOINT는 데이터 변경을 사전에 지정한 저장점까지만 롤백하라는 의미

COMMIT 및 ROLLBACK 처리와는 상관없이 트랜잭션 처리가 일어나는 상황

1.CREATE,ALTER,DROP,RENAME,TRUNCATE TABLE 등 DDL 문장을 실행하면 그 전후 시점에 자동으로 커밋된다.

  1. DML 문장 이후에 커밋 없이 DDL 문장이 실행되면 DDL 수행 전에 자동으로 커밋된다.

  2. 데이터베이스를 정상적으로 접속을 종료하면 자동으로 트랜잭션이 커밋된다.

  3. 애플리케이션의 이상 종료로 데이터베이스와의 접속이 단절되었을 때는 트랜잭션이 자동으로 롤백된다.

profile
Work hard

0개의 댓글