728x90
병행성과 일관성이란?
| 뜻 | 문제점 | |
| 병행성 | 컴퓨터 과학에서 여러 계산을 동시에 수행하는 시스템의 특성으로, 잠재적으로는 서로 상호 작용이 가능하다. | 병행성을 높이고 일관성을 낮추면 트랜잭션을 실행했을 때, 실행하고 있던 다른 트랙잭션(선행 트랜잭션)과 상호 작용이 가능하기 때문에 부정확한 결과를 낳을 수 있다. (Dead lock) |
| 일관성 | 일관성이란 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. (Lock) | 병행성을 낮추고 일관성을 높이면 트랜잭션이 실행중일 때 다른 트랜잭션은 선행중인 트랜잭션과 전혀 연관이 없는 작업을 수행하지만 table에 접근조차 할 수 없어 트랜잭션 처리에 시간이 오래걸릴 수 있다. |
트랜잭션이란?
- A unit of the logical work 즉 하나의 논리적인 작업 단위이다.
- ACID는 DB 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다.
| ACID | 뜻 |
| Atomicity (원자성) | 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장한다. |
| Consistency (일관성) | 트랜잭션이 실행을 성공적으로 완료하면 일관성 있는 DB상태로 유지하는 것을 의미한다. |
| Isolation (독립성) | 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미 |
| Durability (지속성) | 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. |
Lock이란?
1) 트랜잭션의 순차적인 처리를 위해 다른 세션의 접근을 막기위해 사용되는 수단 (일관성과 병행성을 위해 사용)
2) Lock에는 Table단위 lock과 Row 단위 lock이 존재
3) Table Lock은 아래로 내려갈수록 병행성은 낮아지고 일관성은 높아진다. ( Lock 강도가 표에서 내려갈수록 올라감)
| Table Lock 종류 | Row Lock 종류 |
| RS (Row Share) | Exclusive Lock |
| RX (Row Exclusive) | Share Lock |
| S (Share) | |
| SRX (Share Row Exclusive) | |
| X (Exclusive) |
DML 쿼리문을 실행하면 Table에는 자동으로 RX LOCK이 걸리고 접근하고자 하는 row에는 exclusive lock이 걸림
- 다른 세션의 트랜잭션이 선행중이던 트랜잭션의 row에 접근하여도 commit/rollback 전까지 트랜잭션 수행 불가능
- 조회는 가능하나 commit 전까지 바뀐 데이터를 보여주지 않음
- 다른 Row에 대한 접근(수정 및 조회)은 가능하다
// transaction manager랑 lock manager 공부
728x90
'DB > ORACLE' 카테고리의 다른 글
| DB 엔진 - 도메인 char, varchar2 (0) | 2022.12.28 |
|---|---|
| DB 엔진 - DB block header (0) | 2022.12.26 |
| DB 엔진 - 기동 순서, 복구, 백업 (0) | 2022.12.23 |
| DB 엔진 - Execution (0) | 2022.12.22 |
| DB 엔진 - Parsing, hash value (0) | 2022.12.20 |