본문 바로가기

[DB]DataBase/[SQL]

[SQLD] TCL

728x90
반응형

TCL

TCL(Transaction Control Language)

  • 트랜잭션 제어어로, COMMIT, ROLLBACK이 포함
  • DML에 의해 조작된 결과를 작업 단위(트랜잭션) 별로 제어하는 명령어
  • DML 수행 후 트랜잭션을 정상 종료하지 않는 경우 LOCK이 발생할 수 있음

 

잠금(LOCK)

  • 트랜잭션이 수행하는 동안 특정 데이터에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 제한
  • 잠금이 걸린 데이터는 잠금을 실행한 트랜잭션만 접근 및 해제 가능
    • 관리자 권한 계정 제외

트랜잭션(Transaction)

  • 트랜잭션은 데이터베이스의 논리적 연산 단위
    • 하나의 연속적인 업무 단위
  • 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함 됨
  • 분할 할 수 없는 최소의 단위
  • ALL OR NOTHING 개념
    • 모두 COMMIT 하거나 ROLLBACK 처리

트랜잭션 특성

  • 원자성(atomicity)
    • 트랜잭션 정의 된 연산들 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 함
  • 일관성(consistency)
    • 트랜잭션 실행 전 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션 실행 이후에도 데이터베이스 내용에 잘못이 있으면 안됨
  • 고립성(isolation)
    • 트랜잭션 실행 도중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들면 안됨
  • 지속성(durability)
    • 트랜잭션이 성공적으로 수행되면 갱신한 데이터베이스 내용이 영구적으로 저장

COMMIT

  • 입력, 수정, 삭제한 데이터에 이상이 없을 경우 데이터를 저장하는 명령어
  • 한 번 COMMIT을 수행하면 COMMIT 이전에 수행된 DML은 모두 저장되며, (수행된 문장 전으로) 되돌릴 수 없음
  • ORACLE은 DDL 시 AUTO COMMIT이지만 SQL Server는 AUTO COMMIT 비활성화 설정 가능

ROLLBACK

  • 테이블 내 입력, 수정, 삭제한 데이터에 대한 변경을 취소하는 명령어
  • 데이터베이스에 저장되지 않고 최종 COMMIT 지점 / 변경 전 / 특정 SAVEPOINT 지점으로 원복됨
  • 최종 COMMIT 시점 이전까지 ROLLBACK 가능
  • SAVEPOINT를 설정하여 최종 COMMIT 시점이 아닌 그 이후의 원하는 시점으로 원복 가능

 

SAVEPOINT

  • 트랜잭션 내에서 롤백을 부분적으로 수행하기 위해 사용되는 지점을 지정하는 데 사용
  • 사용자가 원하는 위치에 원하는 이름으로 설정 가능
  • ROLLBACK TO savepoint_name 으로 원한는 지점으로 원복 가능
    • 단 COMMIT 수행 시에는 COMMIT 이전으로 원복 불가

SAVEPOINT 문장

 

반응형

'[DB]DataBase > [SQL]' 카테고리의 다른 글

[SQLD] DCL  (0) 2024.05.23
[SQLD] DDL  (0) 2024.05.22
[SQLD] DML  (0) 2024.05.21
[SQLD] 정규 표현식  (0) 2024.05.20
[SQLD] PIVOT 절과 UNPIVOT 절  (0) 2024.05.20