트랜잭션(Transaction)
- 정의
- 반드시 함께 실행 돼야할 작업의 단위
- 특성
- 원자성(Aotomlcity)
- 트랜잭션은 최소의 작업 단위로서 전체가 처리되거나 취소될 수 있지만 일부만 처리될 수 없다
- 일관성(Consistency)
- 트랜잭션이 실행된 이후 데이터베이스의 무결성은 반드지 유지돼야 한다
- 독립성(lsolation)
- 트랜잭션을 여러 개 동시에 실행하더라도 각각의 트랜잭션은 서로 영향을 줄 수 없다.
- 즉 실행되지 않은 트랜잭션의 결과는 다른 트랜잭션에서 참조하는 것이 불가능하다.
- 영속성(Durabllity)
- 종료된 트랜잭션의 결과는 반드시 데이터베이스에 반영돼야 한다.
- 원자성(Aotomlcity)
트랜잭션의 시작과 종료
- 시작
- 이전 트랜잭션이 종료된 이후 DML, DDL, DCL 문장에 실행됏을 떄
- 종료
- COOMIT이나 ROOLBACK 명령이 실행 될 때
- DDL이나 DCL문장의 실행이 완료됫을 때
- 사용자의 정상 종료 시
- 데드락(Deadlock)이 걸리면 트랜잭션의 일부만 종료
- 트랜잭션은 하나의 세션에서 단지 하나만 시작할 수 있으며 DML인 경우 반드시 COMMIT이나 ROLLBACK으로 종료하지만 DDL이나 DCL의 경우 문장의 실행이 완료되면 자동으로 종료된다. 오라클은 SAVE POINT명령을 이용해서 트랜잭션의 과정을 제어할 수 있다.
용어 | 설명 |
DML | Database Manipulation Language[데이터 조작어] - SELECT(조회), INSERT(삽입), UPDATE(수정), DELETE(삭제) 테이블에 있는 행과 열을 조작하는 언어 (데이터베이스 사용자) |
DDL | Data Definition Language[데이터 정의어] - CREATE(생성), ALTER(수정), DROP(삭제),TRUNCATE(초기화) 데이터를 생성하거나 수정, 삭제 등 데이터의 전체 골격을 결정하는 언어 (데이터베이스 생성자) |
DCL | Data Control Language[데이터 제어어] - GRANT(권한부여), REVOKE(권한삭제), COMMIT(작업완료), ROLLBACK(비정상 종료, 복구) 더이터베이스에 접근하거나 객체에 권한을 주는 등의 역할 (데이터베이스 관리자) |
Deadlock | 교착 상태 - 여러 개의 트랜잭션들이 실행 되지 못하고 서로 무한정 기다리는 상태 |
SAVE POINT | 저장점 - 이것을 이용하면 ROLLBACK을 수행할때 전체를 복구하는 것이 아닌 저장점까지만 복구 |
트랜잭션과 언두 세그먼트(Undo segment)
- 트랜잭션과 DML 데이터
- INSERT등의 DML 작업이 실행되면 즉시 테이블에 적용된다.
- 변경된 행에는 특정 잠금(Excluslv lock)이 발생한다.
- 해당 테이블에는 공유 잠금 (Share lock)이 발생한다.
- 트랜잭션이 종료된다 잠금이 해제된다.
- 언두 세그먼트(UNDO SEGMENT)
- 트랜잭션이 실행 될 떄 이전 이미지를 저장
- Rollback을 위해 트랜잭션이 수행되는 동안 이전 정보를 저장
- 세그먼트(SEGMENT)
- 물리적인 저장 영역을 가진 오브젝트를 의미
- 테이블, 인덱스 등 저장 영역에 공간을 할당 받는 오브젝트를 의미
- undo segment 결정
- 5 undo seg에 저장
- 7 테이블에 저장
- 행에 독점 잠금
- 테이블에 공유 잠금
- COMMIT : 7 영구저장 (잠금해제)
- ROLLBACK : 5 복원 (잠금해제)
'DB > Oracle DB(SQL)' 카테고리의 다른 글
[Oracle] 제약 조건 -1 (PK, FK) (0) | 2024.01.31 |
---|---|
[Oracle] DDL(테이블 생성, 삭제, 관리) (0) | 2024.01.31 |
[Oracle] DML(데이터 조작어) (0) | 2024.01.30 |
[Oracle] 그룹 함수 (1) | 2024.01.30 |
[Oracle] 단일 행 함수 (0) | 2024.01.25 |