[ TCL ]   (Transaction Control Language )


- 트랜잭션 : 분리되어서는 안되는 논리적 작업 단위

- TCL:DML문이 실행되어 DBMS에 저장되거나 되돌리기 위해 실행해야 하는 SQL

 


1) 트랜잭션의 시작

- DBMS에 처음 접속했을때
- COMMIT 또는 ROLLBACK했을때

 


2) 트랜잭션의 종료

- COMMIT 또는 ROLLBACK했을때
- DDL(CREATE,DROP,..)등이 실행되었을때
- DB가 종료될때

 


3) TCL의 종류

- COMMIT : SQL문의 결과를 영구적으로 DB에 반영하는 SQL문
- ROLLBACK : SQL문의 결과를 취소하는 SQL문
- SAVEPOINT : 트랜잭션의 한 지점에 표시하는 임시 저장점

 

SQL> INSERT INTO DEPT VALUES(60,'하나','대구');
SQL> INSERT INTO DEPT VALUES(61,'둘','대전');
SQL> SAVEPOINT A;
SQL> INSERT INTO DEPT VALUES(62,'셋','부산');
SQL> INSERT INTO DEPT VALUES(63,'넷','서울');
SQL> ROLLBACK TO A; -- A지점 이후만 작업이 취소됨

 

 

 4) TCL관련 특성

 

(1) READ CONSISTENCY(읽기 일관성- 해당 ROW에 대해서)


- 어떤 사용자가 변경중인 행을 다른 사용자가 변경할 수 없게 하는 기술로써 변경중인 사용자에 의해 COMMIT또는 ROLLBACK이 실행된 후 변경되는 특성

 

(2) LOCK(잠금현상)

 

- 다른 사용자에 의해 DML문이 실행되어져서 동일한 데이터를 INSERT, UPDATE,DELETE할때 한 쪽 사용자는 LOCK이 걸리는 현상

 

1> ROW-LEVEL LOCK (행레벨만 LOCK이 걸림)

  세션1)
   SQL> UPDATE DEPT SET LOC='제주'
        2  WHERE DEPTNO=51; -- 하나의 행만 lock이 걸림

  세션2)
   SQL> delete from dept where deptno=52; -- 가능(다른 행이므로 가능!)

 

2> TABLE-LEVEL LOCK (테이블전체에 LOCK이 걸림)

  세션1>
   SQL> UPDATE DEPT SET LOC='제주'; -- 테이블전체에 lock이 걸림

   세션2>
   SQL> delete from dept where deptno=53; -- lock이 걸림






+ Recent posts