팬텀 충돌(Phantom Conflict)

팬텀 충돌(Phantom Conflict)

팬텀 충돌(Phantom Conflict, 팬텀 문제, Phantom Read)은 트랜잭션이 동일한 조건으로 여러 번 조회할 때, 다른 트랜잭션이 중간에 데이터를 삽입하거나 삭제하여 결과가 달라지는 현상을 의미합니다. 이는 반복 가능한 읽기(Repeatable Read) 수준에서도 발생할 수 있는 문제이며, Serializable(직렬화) 수준의 격리성을 적용해야 방지할 수 있습니다. ※ 팬텀 충돌의 내용은 DB를 배운 사람이면 모두 알 수 있는 내용일 텐데 용어가 … Read more

선분 이력 모델 (Slowly Changing Dimension Type 2, SCD Type 2)

선분 이력 모델 (Slowly Changing Dimension Type 2, SCD Type 2)

선분 이력 모델(Temporal Data Model, SCD Type 2)은 데이터가 변경될 때마다 새로운 행을 추가하여 이전 데이터를 보존하면서 변경 이력을 관리하는 데이터 모델입니다. 📌 선분 이력 모델이란? ✅ 주로 사용되는 곳: 1️⃣ 선분 이력 모델의 테이블 구조 ID NAME ADDRESS START_DATE END_DATE IS_CURRENT 1 Alice New York 2023-01-01 2023-06-30 N 2 Alice Los Angeles 2023-07-01 9999-12-31 … Read more

ROW_NUMBER() OVER 문법

ROW_NUMBER() OVER 문법

Oracle의 ROW_NUMBER() OVER는 결과 집합의 각 행에 대해 정렬 기준을 기반으로 고유한 번호를 부여하는 윈도우 함수(Window Function) 입니다. 📌 기본 문법 ROW_NUMBER() OVER (PARTITION BY 컬럼명 ORDER BY 컬럼명) 1. 기본 사용법 (전체 데이터에 대해 순번 매기기) ROW_NUMBER()를 사용하면 전체 데이터에서 정렬된 순서대로 행 번호를 부여할 수 있습니다. ✅ 직원 테이블에서 급여순으로 순번 매기기 SELECT … Read more

TOP N 쿼리

TOP N 쿼리

TOP N 쿼리란? TOP N 쿼리는 주어진 조건에 따라 상위 N개의 행(Row)만 조회하는 SQL 쿼리를 의미합니다.예를 들어, 급여가 가장 높은 직원 5명을 조회하거나, 가장 많이 판매된 상품 10개를 조회하는 경우가 이에 해당합니다. 1. Oracle 12c 이상: FETCH FIRST N ROWS ONLY 사용 (권장) Oracle 12c부터는 SQL 표준인 FETCH FIRST N ROWS ONLY 구문을 지원하여 간단하게 … Read more

버퍼락 (Buffer Lock, Oracle ver)

버퍼락 (Buffer Lock, Oracle ver)

Oracle의 버퍼락(Buffer Lock) 은 Oracle 데이터베이스에서 데이터 블록(buffer cache) 내의 충돌을 방지하기 위해 사용되는 잠금 메커니즘입니다. 일반적으로, 여러 프로세스가 동일한 블록을 액세스하려 할 때 발생하는 동시성 문제를 해결하기 위해 존재합니다. (Row Lock과 다름) 1. 버퍼락의 개념 참고로 오라클은 데이터를 읽는 최소 단위가 블록 단위입니다. Row한줄을 읽어도 블록단위로 읽어옵니다. (한 블록 내에는 수백개의 Row가 있을 수도 … Read more