오라클 트랜잭션, 락, 격리레벨
트랜잭션(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
'Study > 데이터베이스' 카테고리의 다른 글
오라클 12c 자주 사용하는 함수, 오라클 라이센스, 네이밍 (0) | 2018.04.12 |
---|---|
메타데이터, 캐릭터셋 (0) | 2018.04.11 |
오라클 DB 권한(Access Control) 설정 (0) | 2018.04.10 |
오라클 스키마 수정, 스키마 삭제 (0) | 2018.04.09 |
오라클 스키마 정의, 자료형, 제약조건 (0) | 2018.03.30 |
댓글