본문 바로가기

반응형

트랜잭션

[DB] 9. 트랜잭션(Transaction) - (4) 고립화 수준, 회복 기법 [목차] 1. 트랜잭션 고립화 수준 2. 트랜잭션 회복 기법 1. 트랜잭션 고립화 수준 트랜잭션 고립화 수준(Transaction Isolation Level)은 트랜잭션의 독립성, 고립성을 유지하기 위해 데이터에 대한 접근을 허용하는 수준을 말한다. 로킹(Locking) 기술을 기반으로 고립화 수준을 조정하며 총 4개의 레벨로 구성되어있다. 고립화의 수준에 따라 발생할 수 있는 문제점들이 있는데, 수준이 높아질수록 문제점이 줄어드는 형태이다. 다음과 같은 문제점들이 발생할 수 있다. 1) 부정 판독(Dirty Read) 부정 판독은 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것을 말한다. 트랜잭션 T1이 특정 데이터를 갱신한 후 T2가 해당 데이터를 읽은 다음 T1이 Rollb..
[DB] 9. 트랜잭션(Transaction) - (3) 병행 제어, 로킹, 타임스탬프 [목차] 1. 병행 제어(Concurrency Control)란? 2. 병행의 문제점 3. 병행 제어 기법 1. 병행 제어(Concurrency Control)란? 병행 제어에 앞서, 먼저 병행에 대해서 알아보자. 병행(Concurrency)은 매우 빠르게 여러 트랜잭션 사이를 이동하면서 조금씩 처리를 수행하는 방식이다. 따라서 실제로는 한 번에 한 트랜잭션만 수행하지만, 마치 동시에 여러 트랜잭션을 수행하는 것처럼 보이도록 하는 것이다. 병행 제어(Concurrency Control)는 이렇게 트랜잭션이 병행 수행될 때 트랜잭션이 데이터베이스의 일관성을 파괴하지 않고, 다른 트랜잭션에 영향을 주지 않도록 트랜잭션 간의 상호작용을 제어하는 것을 말한다. 병행 제어의 목적은 다음과 같다. 데이터베이스의 일..
[DB] 9. 트랜잭션(Transaction) - (2) 트랜잭션 스케줄 & 충돌, 뷰 직렬 [목차] 1. 트랜잭션 스케줄 2. 충돌 직렬 가능 3. 뷰 직렬 가능 1. 트랜잭션 스케줄 데이터베이스에서 여러 트랜잭션이 동시에 수행될 때, 수행되는 트랜잭션의 순서에 따라서 결과가 달라질 수 있다. 이때 처리하는 순서를 스케줄이라고 한다. 트랜잭션 스케줄은 크게 3가지로 이루어져 있다. 직렬(Serial) 스케줄 : 트랜잭션 별로 연산을 순차적으로 수행하는 것 비직렬(Non-serial) 스케줄 : 인터리빙(Interleaving) 방식을 이용하여 트랜잭션들을 병행하여 수행하는 것 직렬 가능(Serializable) 스케줄 : 직렬성을 가진 스케줄. 트랜잭션이 동시에 수행되더라도 직렬 스케줄과 동일한 결과를 갖는 것 2. 충돌 직렬 가능 스케줄에 따라 결과가 달라지는 이유는 충돌(Conflict)이..
[DB] 9. 트랜잭션(Transaction) - (1) 특성, ACID, 연산, 상태 [목차] 1. 트랜잭션(Transaction)이란? 2. 트랜잭션의 특성 3. 트랜잭션의 연산 4. 트랜잭션의 상태 1. 트랜잭션(Transaction)이란? 트랜잭션(Transaction)은 데이터베이스에서의 논리적 작업 단위이다. 하나의 작업을 수행하기 위해 필요한 데이터베이스 연산 기능들을 모아놓은 것이며 분리되지 않도록 하여 작업의 완전성을 보장한다. 트랜잭션을 통해서 데이터베이스의 회복과 병행 제어가 가능하다. 즉, 데이터베이스에서 오류가 발생하는 경우의 빠른 회복이나, 여러 사용자가 동시에 데이터베이스를 사용할 수 있도록 제어해주는 중요한 역할을 한다. 데이터베이스의 연산을 SQL문으로 표현한다면, 하나의 작업을 수행하는 SQL문의 집합으로 생각할 수도 있다. 2. 트랜잭션의 특성 트랜잭션이 ..