트랜잭션 Transaction
DBMS에서 발생하는 1개이상의 명령어들을 하나의 논리 집합으로 묶어놓은 단위
-목차-
1.특징
2.락(LOCK)
3.트랜잭션의 시작과 종료
4.트랜잭션 과정
1 특징
- 원자성(Aotomicity)
- - 트랜잭션은 최소의 작업 단위로서 전체가 처리되거나 취소될 수 있지만 일부만 처리될 수 없다.커밋이나 롤백까지 작업단위. 예를들면 머니이체.
- 일관성(무결성)(Consistency)
- - 트랜잭션이 실행된 이후 데이터베이스의 무결성은 반드시 유지돼야 한다. 무결성중요
- 독립성(Isolation)
- - 트랜잭션을 여러 개 동시에 실행하더라도 각각의 트랜잭션은 서로 영향을 줄 수 없다.
- - 즉, 실행이 종료되지 않은 트랜잭션의 결과는 다른 트랜잭션에서 참조하는 것이 불가능하다.
- 영속성(Durability)
- - 종료된 트랜잭션의 결과는 반드시 데이터베이스에 반영돼야 한다.
2 락(LOCK)
독점 잠금(Exclusive lock) , 공유 잠금(Share lock)
독점 잠금은 현재 세션이외에는 접근을 불허하는 잠금이다. 이는 트랜잭션의 특징인 독립성을 보장하기
위한 것이다. 트랜잭션으로 행에 잠금이 발생하면 다른 세션에서는 해당 행을 검색할 수 없고 단지 언
두 세그먼트의 정보만 보게 된다. 그리고 이때 테이블에는 공유 잠금이 발생하는데 이것은 DML작업으
로 행이 잠겨있는 테이블에 대해서 DDL(DROP, ALTER)작업을 방지한다. 공유 잠금은 독점 잠금이 걸
린 행 이외 행에 대한 접근을 방해하지 않는다.
3 트랜잭션의 시작과 종료
① 시작
- 이전 트랜잭션이 종료된 이후 DML(INSERT, UPDATE, DELETE) , DDL(CREATE, ALTER,
DROP, TRUNCATE), DCL(GRANT, REVOKE) 문장에 실행됐을 때 시작된다.
② 종료
- COMMIT이나 ROLLBACK 명령이 실행 될 때 종료된다.
- DDL이나 DCL문장의 실행이 완료되면 자동으로 종료된다.
- 사용자의 정상 종료 시에 종료된다.
- 데드락(Deadlock)이 걸리면 트랜잭션의 일부만 종료된다.
4 트랜잭션 과정
1. UNDO segment는 5번테이블의 정보를 저장한다. 언두는 롤백을 의미한다고 볼 수 있다. 즉, 롤백을 위한 원본정보를 저장하는 세그먼트다.
2. 원본테이블인 5번테이블 정보를 언두세그먼트로 보내는 과정
3. 테이블정보를 수정하면 오라클에선 다른 DB와 다르게 바로 저장이 된다. 5번테이블정보를 UPDATE하자마자 7번테이블로 바뀌었다.
4. 다른사람이 이 테이블에 엑세스하지 못하게 잠금을 한다. 독점적으로 사용하기 위해서다. 오라클과 DB2만 독점잠금을 걸 수가 있다.
5. 테이블을 지우는것만 금지하는것은 share lock이고, 변경시킨 7행에는 독점잠금을 걸어둔다. 이렇게 공유잠금과 독점잠금을 건다. 여기서 커밋을 하게되면 언두세그먼트가 지워진다.
'데이터베이스' 카테고리의 다른 글
[ORACLE] ORA-01012: not logged on 에러 해결방법 (0) | 2022.11.07 |
---|---|
[SQL] SQL 문법과 명령어 요약 정리 (0) | 2022.11.07 |
오라클 네트워크 접속 (0) | 2022.11.07 |
[ORACLE] 주요 구성 요소 개요 (0) | 2022.11.02 |