데이터베이스

[ORACLE] 트랜잭션(Transaction)과 잠금(LOCK)

화이트해커 Luna 🌙 2022. 11. 7. 00:45
728x90
반응형

트랜잭션 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행에는 독점잠금을 걸어둔다. 이렇게 공유잠금과 독점잠금을 건다. 여기서 커밋을 하게되면 언두세그먼트가 지워진다.

728x90
반응형