본문 바로가기
Study/데이터베이스

오라클 트랜잭션(Transaction) , 락(Lock), 격리레벨 (lsolation Level)

by ✲ 2018. 4. 17.
728x90
반응형

오라클 트랜잭션, 락, 격리레벨


트랜잭션(Transaction) 

복수의 SQL문을 수행하는 도중(예: 은행 간의 이체)에 장애가 발생했을 때 장애에 대응할 수 있도록 하는 기능 


전체수행(커밋: Commit)과 전체취소(롤백:Rollback) 두 가지의 결과값만 가져야 함 

SAVEPOINT 명령어까지 ROLLBACK할 수 있음 

AutoCommit가 되는 경우 

-DDL/DCL 명령문 

-오라클이 정상종료가 된 경우 


ACID특성 

원자성(atomicity) 

All-or-Nothing, Commit/ Rollback

일관성(Consistency)

트랜잭션 전후에 데이터가 손상을 받으면 안됨 

같은 데이터가 다른 값을 가지면 안됨 

고립성/격리수준(Isolation)

여러 개의 트랜잭션이 수행될 때 성능과 데이터 안정성간의 trade-off

지속성(durability) 

트랜잭션이 종료된 이후에도 데이터에 문제가 없어야 됨(장시간) 


로컬/글로벌 트랜잭션 

로컬 트랜잭션 

동일한 시스템 안에서의 트랜잭션 

DBMS가 보장하는 경우가 많음 

A은행 1번계좌에서 2번계좌 


글로벌 트랜잭션 

서로 다른 시스템에서의 트랜잭션 

DBMS외부의 미들웨어/WAS가 보장

A은행1-> B은행2번계좌

서로다른 DBMS1번 / DMBS2번 

A은행에서 출금은 제대로 되었는데, B은행에서 입금이 제대로 되지 않은 경우 전체 트랙잭션이 전체 취소가 되어야함! 



락(Lock)

- 공유자원(리소스)에 대해 여러개의 트랙잭션이 접근하려고 경쟁하려고 할 때 

제어하는 방법

- 동시성제어(Concurrency Control)라고 하고 보통 Lock으로 해결 

- 프로그래밍에서는 동기화(Synchronization)이라고 함 

일관성(Consistency)과 무결성(Integrity)을 지키기 위해서 적용 


Lock Granularity 

테이블단위 락(Table Lock) 

동일한 테이블을 다른 트랙잭션이 사용하고 있다면 접근 금지 

줄단위 락 (Row Lock) 

동일한 줄(Row)만 접근 금지 (테이블 락에 비해 높은 성능) 

글로벌 락 (Global Lock) 

특정 트랙잭션이 수행되면 다른 트랙잭션이 모두 정지하는 경우 

데이터베이스 덤프의 경우 



격리레벨(lsolation Level) 

성능과 데이터의 일관성 사이를 결정하는 방식 

Read Uncommitted / Read Committed / Repeatable Read / Serializable 



>
728x90
반응형

댓글