본문 내용은 모두 필자가 공부하며 직접 정리한 내용입니다.
Kdata 데이터자격검정의 SQL 개발자(SQLD) 가이드를 참고하였습니다.
─지난 글 보기─
과목 2 SQL 기본 및 활용
제 1장 SQL 기본
제 4절 TCL(Transaction Control Language)
1.트랜잭션 개요
ㆍ데이터베이스의 논리적 연산단위
ㆍ밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작
ㆍ하나의 트랜잭션에는 하나 이상의 SQL 문장(UPDATE, INSERT, DELETE 등 데이터를 수정하는 DML 문)이 포함
ㆍ분할할 수 없는 최소의 단위, 그렇기 때문에 전부 적용하거나 전부 취소한다.
ㆍ커밋(COMMIT) : 올바르게 반영된 데이터를 데이터베이스에 반영시키는 것
ㆍ롤백(ROLLBACK) : 트랜잭션 시작 이전의 상태로 되돌리는 것
ㆍ저장점(SAVEPOINT) 기능과 함께 3가지 명령어를 트랜잭션을 컨트롤하는 TCL로 분류한다.
ㆍSELECT 문장은 직접적인 트랜잭션의 대상이 아니지만, SELECT FOR UPDATE 등
배타적 LOCK을 요구하는 SELECT 문장은 트랜잭션의 대상이 될 수 있다.
ㆍ트랜잭션의 특성(특히 원자성)을 충족하기 위해 데이터베이스는 다양한 레벨의 잠금 기능을 제공
ㆍ잠금은 기본적으로 트랜잭션이 수행하는동안 특정 데이터에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 제한하는 기법
ㆍ잠금이 걸린 데이터는 잠금을 수행한 트랜잭션만이 해제할 수 있다.
2. COMMIT
- COMMIT이나 ROLLBACK 이전의 데이터 상태는 다음과 같다.
ㆍ단지 메모리 버퍼에만 영향을 받았기 때문에 데이터의 변경 이전 상태로 복구 가능하다.
ㆍ현재 사용자는 SELECT 문장으로 결과를 확인 가능하다.
ㆍ다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없다.
ㆍ변경된 행은 잠금(LOCKING)이 설정되어서 다른 사용자가 변경할 수 없다.
- COMMIT 이후의 데이터 상태는 다음과 같다.
ㆍ데이터에 대한 변경 사항이 데이터베이스에 반영된다.
ㆍ이전 데이터는 영원히 잃어버리게 된다.
ㆍ모든 사용자는 결과를 볼 수 있다.
ㆍ관련된 행에 대한 잠금(LOCKING)이 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다.
3. ROLLBACK
ㆍ데이터 변경 사항이 취소되어 데이터의 이전 상태로 복구
ㆍ관련된 행에 대한 잠금(LOCKING)이 풀리고 다른 사용자들이 데이터 변경을 할 수 있게 된다.
COMMIT과 ROLLBACK을 사용함으로써 얻을 수 있는 효과
- 데이터 무결성 보장
- 영구적인 변경을 하기 전에 데이터의 변경 사항 확인 가능
- 논리적으로 연관된 작업을 그룹핑하여 처리 가능
4. SAVEPOINT
ㆍ롤백(ROLLBACK)할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라
현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.
ㆍ복수의 저장점을 정의할 수 있으며, 동일이름으로 저장점을 정의했을 때는 나중에 정의한 저장점이 유효하다.
다음에는 함수(FUNCTION)에 관한 내용을 정리하여 포스팅하겠습니다.
'데이터베이스 > SQLD' 카테고리의 다른 글
[SQLD 도전기] SQL 기본(7) - GROUP BY, HAVING 절 (0) | 2022.10.18 |
---|---|
[SQLD 도전기] SQL 기본(6) - 함수(FUNCTION) (0) | 2022.10.18 |
[SQLD 도전기] SQL 기본(3) - DML(Data Manipulation Language) (0) | 2022.10.12 |
[SQLD 도전기] SQL 기본(2) - DDL(Data Definition Language) (0) | 2022.10.12 |
[SQLD 도전기] SQL 기본(1) - 관계형 데이터베이스 개요 (0) | 2022.10.12 |
댓글