알버트의 개발하는 블로그
[DB] 트랜젝션과 COMMIT, ROLLBACK 본문
1.트랜잭션이란?
트랜잭션이란 데이터베이스에서 하나의 논리적 기능을 수행하는 연산자들의 집합이다. 즉, 사용자의 의도에 따라 여러 개의 문장으로 구성된 트랜잭션은 반드시 동시에 실행(COMMIT) 되거나 취소(ROLLBACK)된다. 트랜잭션을 통해 작업의 단위를 결정함으로써 작업 결과의 신뢰성이 확보된다. 두 개의 작업을 하나의 트랜잭션으로 묶어 놓아 두 개의 작업이 모두 실행되지 않으면 모두 취소되도록 하여 이 작업의 신뢰도를 높일 수 있다.
① COMMIT
한 작업의 논리적 단위가 성공적으로 끝났고, 데이터베이스가 다시 일관된 상태에 잇으며 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산이다. 즉, 작업을 완료한다.
SQL 명령어로 수행된 결과를 실제 물리적 디스크로 저장하는 SQL 명령이다. 모든 DML 문장을 수행한 후 작업을 완료할 때 반드시 필요하다. DML 문장을 수행한 후 테이블의 정보를 검색해보면 문장의 수행이 반영된 것을 볼 수 있다. 하지만, 이것은 메모리상에서만 처리된 것이다. COMMIT 명령을 수행해야지만 실제 하드디스크에 저장된다. COMMIT 명령을 해야만 실제 디스크에 저장되고 데이터베이스를 껏다가 다시 키더라도 남아 있다.
② ROLLBACK
트랜잭션의 실행을 취소하였음을 알리는 연산자로 트랜잭션이 수행한 결과를 원래의 상태로 원상 복귀시키는 연산이다. 즉, 작업을 취소한다. 모든 DML 문장을 수행한 후 작업을 취소할 때 반드시 필요하다. 오라클은 작업이 발생하면 작업 이전 정보를 undo tablespace 라는 임시 저장 공간을 이용하여 저장하고 있다. undo tablespace는 자동으로 관리되며 사용자는 이들 정보를 직접 볼 수 없으며 단지 트랙잭션에만 사용된다. 그래서 ROLLBACK을 실행하면 DML 작업에 의해서 변경된 정보를 이전 정보로 환원할 수 있다.
'프로그래밍 언어 > DB' 카테고리의 다른 글
[DB] MSSQL Table 복사하기 / 테이블 백업하기 (0) | 2022.02.14 |
---|---|
[DB] DBMS의 정의와 종류 (오라클, MySQL, MariaDB, MSSQL) (0) | 2022.01.28 |
[Oracle] 오라클 리스너와 TNS에 대해서 (0) | 2021.12.16 |
[Oracle] INS-20802 oracle net configuration assistant을(를) 실패했습니다 해결 방법 (0) | 2021.12.16 |
[Oracle] ORA-01950: 테이블스페이스 ''에 대한 권한이 없습니다 해결방법 (0) | 2021.12.15 |