(SQL) TCL(Transaction Control Language) 이란 ?

2020. 1. 31. 16:25IT-개발/DB

반응형

 

COMMIT ROLLBACK 를 mysql로 이해하려고 하는데~ 갑자기 SAVEPOINT 가 보이네요~ ㅠㅠ

 

내용이 좋아서 저장!

 

(펌 : https://rh-cp.tistory.com/41?category=661522 )

 

https://rh-cp.tistory.com/41?category=661522

 

(SQL) TCL(Transaction Control Language) 이란 무엇일까?

TCL(Transaction Control Language)이란? ▷ DCL(Data Control Language)에서 트랜잭션을 제어하는 명령인 COMMIT과 ROLLBACK만을 따로 분리해서 TCL이라고 표현하고 있습니다. ◈COMMIT 연산 ▷ COMMIT 연산은..

rh-cp.tistory.com

 

TCL(Transaction Control Language)이란?

 ▷ DCL(Data Control Language)에서 트랜잭션을 제어하는 명령인

 COMMIT ROLLBACK만을 따로 분리해서 TCL이라고 표현하고 있습니다.

 

◈COMMIT 연산

  ▷ COMMIT 연산은 트랜잭션 처리가 정상적으로 종료되어 트랜잭션이 수행한 변경 내용을 데이터베이스에 반영하는 연산입니다.

  ▷ 내용을 변경한 트랜잭션이 완료되면 그 트랜잭션에 의해 데이터베이스는 새롭게 일관된 상태로 변경되며, 이 상태는 시스템 오류가 발생하더라도 취소되지 않습니다.

 

(COMMIT 연산 실행)

※ 지금까지 해온 작업들을 데이터베이스에 반영합니다.

 

 

◈ROLLBACK 연산

  ▷ ROLLBACK 연산은 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성이 깨졌을 때, 트랜잭션이 행한 모든 변경 작업을 취소하고 이전 상태로 되돌리는 연산입니다.

   ▷ ROLLBACK 연산 시 해당 트랜잭션은 받았던 자원과 잠금(LOCK)을 모두 반환하고, 재시작(Restart)되든지 폐기됩니다.

(ROLLBACK 연산 실행)

※ 마지막 COMMIT 이후의 작업으로 돌아갑니다.

   만약 COMMIT를 하지 않았다면 모든 작업이 사라집니다.

(COMMIT를 하지 않고, ROLLBACK 연산 실행)

 테이블의 데이터를 삭제한 후 다시 테이블의 데이터를 출력하면 데이터가 사라져 있습니다.

하지만, ROLLBACK를 하게 된다면 데이터 삭제 후 COMMIT를 삭제하지 않았기에, 데이터가 다시 복구가 됩니다.

 

(COMMIT를 한 뒤, ROLLBACK 연산 실행)

※ 테이블의 데이터를 삭제한 후 테이블의 데이터를 출력하게 되면 데이터가 사라져 있습니다.

그 후 COMMIT연산을 한 뒤, ROLLBACK연산을 하고, 다시 테이블 데이터를 출력하게 되면, 데이터는 사라진 채로 출력됩니다. 그 이유는 COMMIT연산에 의해 데이터가 DB에 반영되었기 때문입니다.

 

◈SAVEPOINT

   ▷ SAVEPOINT는 현재의 트랜잭션을 작게 분할하는 명령어 입니다.

   ▷ 저장된 SAVEPOINT는 ROLLBACK TO SAVEPOINT문을 사용하여 지정한 곳까지 ROLLBACK 할 수 있습니다.

   ▷ 여러개의 SQL문을 수반하는 트랜잭션의 경우, 사용자가 트랜잭션 중간 단계에서 SAVEPOINT를 지정할 수 있습니다.

 

   ▷ 이 SAVEPOINT는 차우 ROLLBACK과 함께 사용하며, 현재 트랜잭션 내의 특정 SAVEPOINT까지 ROLLBACK 할 수 있습니다.

 

(SAVEPOINT 만들기)

※ SAVEPOINT 포인터명;

 

 테이블에 첫번째 값을 넣은 후 SAVEPOINT를 만듭니다. 그후 두번째, 세번째 값을 넣고 테이블의 데이터를 출력하게 되면, 세개의 값이 출력됩니다. 그후 C1이라는 SAVEPOINT로 ROLLBACK연산을 수행하게 된다면, 마지막 COMMIT이 실행된 그 이후로 돌아가게 됩니다. 그 후 테이블의 데이터를 출력하게 되면 첫번째 값만 출력되게 됩니다.

 

※SAVEPOINT 유의사항

1. SAVEPOINT 후 COMMIT연산을 하게 된다면, COMMIT 연산 이전에 만든 SAVEPOINT들은 모두 사라지게 됩니다.

2. SAVEPOINT는 여러개 생성할 수 있습니다.

 

 

 

 

'IT-개발 > DB' 카테고리의 다른 글

(mariadb) like 문  (0) 2020.02.06
[mysql] MySQL 하지 말아야 할 것 17가지 (펌)  (0) 2020.01.15
[mariadb] utf-8 설정하기  (0) 2019.07.09
[mariadb] 유용한 명령어 모음 (펌 + 혼합)  (0) 2019.05.08
[mariaDB] UNION 연산자 (펌)  (0) 2019.05.08