목록isolation (3)
변수의 기록
1. 트랜잭션은 동시에 실행된다대부분의 데이터베이스 시스템은 성능을 위해 여러 트랜잭션을 동시에 병렬 실행시킨다.그런데 문제는, 이 과정에서 트랜잭션들이 서로 영향을 주고받을 수 있다는 점이다.그 영향은 때때로 심각하다.읽어서는 안 될 값을 읽거나, 중간에 사라지는 값을 읽고 계산하거나,더 나쁘면 트랜잭션이 업데이트한 결과가 통째로 덮어써지며 날아간다. 2. 동시에 실행될 때 발생하는 대표적인 이상 현상들 이상 현상설명Dirty Read아직 commit되지 않은 트랜잭션이 작성한 값을 읽음Non-repeatable Read같은 쿼리를 두 번 실행했는데 결과가 다름Phantom ReadWHERE 조건은 같지만, 행의 개수가 달라지는 현상 → 이런 현상들은 트랜잭션 격리 수준(Isolation Level..
트랜잭션이 동시에 실행될 때, 우리는 무엇을 보장해야 할까?데이터베이스에서 여러 사용자가 동시에 트랜잭션을 수행한다면 어떤 일이 벌어질까요?예를 들어, 두 명의 사용자가 동시에 같은 은행 계좌에 접근해 금액을 업데이트한다고 가정해봅시다.T1: 1000원을 출금T2: 2000원을 입금정상이라면 결과는 잔고 +1000원이 되어야겠지만, 두 트랜잭션이 얽혀 실행되면 예기치 못한 결과가 발생할 수 있습니다. 이처럼 트랜잭션의 실행 순서는 단순히 성능을 넘어서 데이터의 정확성과 직결됩니다.스케줄(Schedule)이란?스케줄은 여러 트랜잭션이 동시에 실행될 때, 각 연산(읽기, 쓰기)이 실제로 어떤 순서로 실행되었는지를 기록한 것입니다.중요한 점은:각 트랜잭션 내부의 연산 순서는 바뀌지 않지만여러 트랜잭션이 뒤섞여..
데이터베이스 트랜잭션과 ACID 완전 정리 (Oracle 중심 + Java 예제 포함)트랜잭션(Transaction)이란?트랜잭션은 하나의 논리적 작업 단위 (logical unit of work) 를 의미합니다.일반적으로 여러 SQL 문장을 하나의 트랜잭션으로 묶어, 전부 성공하거나 전부 실패하게 만들어야 합니다.예를 들어, 계좌이체는 출금과 입금이 동시에 성공하거나 동시에 실패해야 합니다.핵심 특징트랜잭션에 포함된 SQL 일부만 실행되어 반영되는 일은 절대 없어야 합니다.데이터 정합성과 일관성을 유지하기 위해 필수적인 개념입니다.Oracle의 트랜잭션 처리 방식트랜잭션의 시작과 종료Oracle에서는 INSERT, UPDATE, DELETE 같은 DML 문이 실행되면 트랜잭션이 자동으로 시작됩니다.트랜..