본문 바로가기

자격증/SQLD

TCL (Transaction Control Language)

1. 트랜잭션 개요


의미

  • 데이터 베이스의 논리적 연산 단위

  • 밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작

  • 분할 불가능한 최소 단위

  • all or nothing


특성

  • 원자성(automicity) : all or nothing, 되거나 안됬거나!

  • 일관성(consistency) : 트랜잭션의 전 후에 데이터베이스의 내용이 잘못이 없는 것

  • 고립성(isolation) : 트랜잭션 도중에 다른 트랜잭션이 실행 될 순 없음

  • 지속성(durability) : 트랜잭션의 결과가 영구적으로 저장 됨


TCL

  • commit : 데이터베이스의 변경사항 반영

  • rollback : 이전 상태로 복수

  • save point : 저장점


2. commit


입력, 수정, 삭제한 자료에 대해서 문제가 없다고 판단될 때 commit 명령을 완료할 수 있는 명령


commit 이전의 특징

  • 메모리 버퍼에만 영향을 받음, 복구가 가능함

  • select문으로 결과 확인 가능

  • 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없음

  • 변경된 행은 locking이 걸려있어 다른 사용자가 변경이 불가능 함


commit 이후의 특징

  • 변경된 사항에 대해 데이터베이스에 반영

  • 이전 데이터는 영원히 잃어버리게 됨

  • 모든 사용자는 결과를 볼 수 있음

  • 관련된 행에 LOCKING이 풀리고 다른 사용자들이 행을 조작할 수 있음


DB별 특징

  • oracle : 사용자가 직접 commit 해줘야 함

  • sqlserver
    auto commit
    암시적(시작은 DBMS가 끝은 사용자가)
    명시적(시작과 끝을 모두 사용자가 명시 함)


3. rollback


사용자가 입력, 수정, 삭제한 데이터에 대해서 변경 사항을 취소하는 기능, 관련된 행의 locking이 풀림


예)

update into player(player_id, team_id, postion, height, wieght, back_no)
value(‘1999035’, ‘K02’, ‘이운재’, ‘GK’, 182, 82, 1)


rollback;


효과

  • 데이터의 무결성 보장

  • 영구적인 변경 전, 변경사항 확인 가능

  • 논리적으로 연관된 작업을 그루핑하여 처리 가능


4. savepoint


savepoint는 전체 롤백을 막고 특정한 지점까지만 롤백이 가능하도록 지정하는 구문



예)

  • oracle
    savepoint svpt1;
    ...
    rollback to svpt1;

  • sql server
    save transaction svtr1;
    ...
    rollback transaction svtr1;



5. 정리

  • commit, rollback은 CUD 수행에 대해서 데이터 무결성을 보장하기 위함

  • DDL문장은 그 전후 시점에 자동으로 commit됨

  • 데이터 베이스에 정상적으로 접속을 종료하면 자동으로 트랜잭션이 커밋

  • 이상 종료로 접속 단절 시 자동 롤백


'자격증 > SQLD' 카테고리의 다른 글

GROUP BY, HAVING 절  (0) 2016.09.09
where 절  (0) 2016.09.09
DML (Data Manipulation Language, 데이터 조작 언어)  (0) 2016.09.09
DDL (Data Definition Language)  (0) 2016.09.09
관계형 데이터베이스 개요  (0) 2016.09.09