2025/05/19 4

(데이터베이스) 트랜잭션 스케줄링 완전 분석: Recoverable, Cascadeless, Strict 스케줄의 모든 것

트랜잭션 스케줄은 왜 회복 가능해야 할까?Recoverable / Cascadeless / Strict Schedule 완전 정리데이터베이스는 동시성(Concurrency)을 보장해야 하지만, 동시에 발생하는 트랜잭션이 모두 문제없이 끝나는 것은 아닙니다. 일부 트랜잭션은 롤백되기도 하고, 이로 인해 다른 트랜잭션까지 영향을 받을 수 있습니다.따라서 DBMS는 단순히 serializable한 스케줄만을 고려해서는 안 되며, rollback 상황에서도 데이터 정합성을 유지할 수 있는 스케줄, 즉 **회복 가능한 스케줄(Recoverable Schedule)**을 반드시 보장해야 합니다.1. 스케줄(Schedule) 복습스케줄이란, 여러 트랜잭션의 연산(read/write)이 실제로 어떤 순서로 실행되었는지..

(데이터베이스) 트랜잭션 스케줄링과 Serializability 정리

트랜잭션이 동시에 실행될 때, 우리는 무엇을 보장해야 할까?데이터베이스에서 여러 사용자가 동시에 트랜잭션을 수행한다면 어떤 일이 벌어질까요?예를 들어, 두 명의 사용자가 동시에 같은 은행 계좌에 접근해 금액을 업데이트한다고 가정해봅시다.T1: 1000원을 출금T2: 2000원을 입금정상이라면 결과는 잔고 +1000원이 되어야겠지만, 두 트랜잭션이 얽혀 실행되면 예기치 못한 결과가 발생할 수 있습니다. 이처럼 트랜잭션의 실행 순서는 단순히 성능을 넘어서 데이터의 정확성과 직결됩니다.스케줄(Schedule)이란?스케줄은 여러 트랜잭션이 동시에 실행될 때, 각 연산(읽기, 쓰기)이 실제로 어떤 순서로 실행되었는지를 기록한 것입니다.중요한 점은:각 트랜잭션 내부의 연산 순서는 바뀌지 않지만여러 트랜잭션이 뒤섞여..

(데이터베이스) 트랜잭션과 ACID 완전 정리 (Oracle 중심 + Java 예제 포함)

데이터베이스 트랜잭션과 ACID 완전 정리 (Oracle 중심 + Java 예제 포함)트랜잭션(Transaction)이란?트랜잭션은 하나의 논리적 작업 단위 (logical unit of work) 를 의미합니다.일반적으로 여러 SQL 문장을 하나의 트랜잭션으로 묶어, 전부 성공하거나 전부 실패하게 만들어야 합니다.예를 들어, 계좌이체는 출금과 입금이 동시에 성공하거나 동시에 실패해야 합니다.핵심 특징트랜잭션에 포함된 SQL 일부만 실행되어 반영되는 일은 절대 없어야 합니다.데이터 정합성과 일관성을 유지하기 위해 필수적인 개념입니다.Oracle의 트랜잭션 처리 방식트랜잭션의 시작과 종료Oracle에서는 INSERT, UPDATE, DELETE 같은 DML 문이 실행되면 트랜잭션이 자동으로 시작됩니다.트랜..