본문 바로가기
Programming/Database

[Database] 트랜잭션, Transaction

by 공부합시다홍아 2023. 12. 11.

https://hong-study.tistory.com/294


 

트랜잭션 ( Transaction )

논리적인 작업의 단위로, 분리되어서는 안될 작업의 단위이다.
    ▶ 시작은 실행 가능한 첫 번째 SQL문장이 실행 될 때 시작한다.
● 트랜잭션은 COMMIT이나 ROLLBACK문에 의해 명시적으로 종료하거나, DDL이나 DCL문장 실행으로 자동 커밋되어
   종료될 수 있다.
● 사용자의 데이터베이스 종료 또는 시스템 충돌(Crash)에 의한 데이터베이스 비정상적 종료에 의해 트랜잭션이
   종료되어 변경사항이 취소될 수 있다.

트랜잭션은 실행 가능한 SQL 문장이 처음 실행될 때 시작하고, 다음의 경우 종료된다.
1. COMMIT 이나 ROLLBACK 문장이 완료될 때
2. CREATE 같은 DDL 문장이 완료 될 때
3. DCL 문장이 완료될 때
4. 사용자가 SQL Plus를 종료할 때
5. 머신 실패나 시스템 충돌에 의한 데이터베이스가 비정상적으로 종료될 때
COMMIT과 ROLLBACK을 이용하면 다음 장점을 제공한다.
1. 데이터의 일관성 
2. 데이터를 영구적 변경하기 전 데이터 변경을 미리 확인
3. 관련된 작업을 논리적으로 그룹화
4. 하나의 트랜잭션이 끝난 후 다음의 실행 가능한 SQL문장은 자동적으로 다음 트랜잭션을 시작

DDL문장이나 DCL문장은 자동으로 커밋되므로, 트랜잭션을 암시적으로 종료한다.
▶ COMMIT, SAVEPOINT 그리고 ROLLBACK 문장을 사용하여 트랜잭션의 논리 제어 가능

자동 커밋은 다음 환경에서 발생한다.
1. DDL 문장 완료시
2. DCL 문장 완료시
3. 명시적인 COMMIT이나 ROLLBACK 없이 SQL PLUS를 정상적으로 종료할 때 
자동 롤백은 다음의 환경에서 발생한다.
1. SQL PLUS를 비정상적으로 종료할 때
2. 시스템 실패시

▶ 트랜잭션이 시스템 실패에 의해 중단될 때 모든 트랜잭션은 자동적으로 롤백된다.
    이것은 데이터에 대해서 원하지 않는 변경을 막아주고 테이블을 마지막으로 커밋된 시점으로 상태를 되돌린다.

SQL은 테이블의 무결성을 보호한다.

SQL PLUS에서 AUTOCOMMIT 명령은 ON이나 OFF로 토글될 수 있다.
ON : 각 각의 개별적인 DML 문장이 실행되자마자 커밋, 그러므로 변경을 롤백할 수 없다.
OFF : COMMIT은 명시적으로 실행 또한 COMMIT은 DDL문장이 완료되거나 SQL PLUS를 종료할 때 완료

AUTO COMMIT의 상태확인
SHOW AUTOCOMMIT;
AUTO COMMIT ON 상태변경
SET AUTOCOMMIT ON;
AUTO COMMIT OFF 상태변경
SET AUTOCOMMIT OFF;
SAVEPOINT 지정
SAVEPOINT DEL10;
ROLLBACK (SAVEPOINT로 돌아가기)
ROLLBACK TO DEL20;
728x90

'Programming > Database' 카테고리의 다른 글

[Database] 제약조건  (1) 2023.12.12
[Database] Table, 테이블  (1) 2023.12.11
[Database] DML ( Data Manipulation Language )  (0) 2023.12.11
[Database] 서브쿼리 문제풀이  (0) 2023.12.07
[Database] 서브 쿼리  (0) 2023.12.07