Write Ahead Logging (WAL)

Write Ahead Logging (WAL)

Oracle의 Write-Ahead Logging (WAL) Oracle에서는 Write-Ahead Logging (WAL) 개념이 Redo Log와 Undo Log를 통해 구현됩니다. WAL은 데이터를 디스크의 데이터 파일에 기록하기 전에, 먼저 로그(redo log)에 기록하는 기법으로, 장애 발생 시 데이터 복구 및 트랜잭션의 무결성을 보장하는 핵심 기술입니다. Fast Commit시 사용되는 기법이기도 합니다. 1. Write-Ahead Logging (WAL)의 개념 2. Oracle의 WAL 구조 Oracle의 WAL은 Redo … Read more

클러스터 테이블(Clustered Table)

클러스터 테이블(Clustered Table)

클러스터 테이블(Clustered Table)은 데이터가 물리적으로 클러스터링되어 저장되는 방식으로, 관련 데이터가 동일한 디스크 블록에 가깝게 저장되도록 하는 데이터베이스 테이블 유형입니다. 이를 통해 특정 쿼리 성능을 최적화할 수 있습니다. 1. 클러스터 테이블 개요 클러스터 테이블은 동일한 키 값을 가진 여러 행이 물리적으로 가까운 위치에 저장되도록 구성됩니다. 이는 I/O 성능을 향상시키고 디스크 읽기 비용을 절감하는 데 유용합니다. ✅ … Read more

오라클(Oracle) Index Scan 종류

오라클(Oracle) Index Scan 종류

오라클(Oracle)에서 Index Scan은 인덱스를 활용하여 데이터를 조회하는 방식이며, 다양한 방식으로 수행될 수 있습니다. 주요 Index Scan의 종류는 다음과 같습니다. 1. Index Unique Scan 2. Index Range Scan 3. Index Full Scan 4. Index Fast Full Scan 5. Index Skip Scan 6. Index Join Scan 7. Index Range Scan Descending 📌 정리 Index Scan 유형 특징 … Read more

MVCC(Multi-Version Concurrency Control, 다중 버전 동시성 제어)

MVCC(Multi-Version Concurrency Control, 다중 버전 동시성 제어)

다중 버전 동시성 제어(MVCC, Multi-Version Concurrency Control)는 데이터베이스 시스템에서 동시성을 관리하는 기법으로, 트랜잭션이 동시에 실행될 때 읽기 작업과 쓰기 작업이 충돌하지 않도록 여러 개의 데이터 버전을 유지하는 방식입니다. 🔹 MVCC의 주요 개념 🔹 MVCC의 장점과 단점 ✅ 장점 ❌ 단점 🔹 MVCC를 사용하는 대표적인 DBMS MVCC는 트랜잭션이 많은 환경에서 높은 동시성과 성능을 제공하는 중요한 기법이며, … Read more

비관적 동시성 제어 (Pessimistic Concurrency Control) vs 낙관적 동시성 제어 (Optimistic Concurrency Control)

비관적 동시성 제어 (Pessimistic Concurrency Control) vs 낙관적 동시성 제어 (Optimistic Concurrency Control)

트랜잭션 동시성 제어 방식에는 크게 비관적 동시성 제어(Pessimistic Concurrency Control, PCC)와 낙관적 동시성 제어(Optimistic Concurrency Control, OCC) 두 가지가 있습니다. 각각의 방식은 동시성 문제를 해결하는 접근 방식이 다릅니다. ※ 참고로 금융권에서는 FOR UPDATE 구문을 당연하게 사용합니다. 다른 분야에서는 FOR UPDATE 구문을 꺼리는 경향이 있는데, “데이터의 변경”을 목적으로 SELECT를 하는 경우라면 저는 FOR UPDATE 구문을 당연히 … Read more

트랜잭션 동시성 제어 (Transaction Concurrency Control)

트랜잭션 동시성 제어 (Transaction Concurrency Control)

트랜잭션 동시성 제어는 다수의 트랜잭션이 동시에 실행될 때 데이터의 일관성을 유지하고, 데이터 충돌을 방지하는 기술입니다. 이를 통해 데이터베이스 무결성을 보장하고, 병렬 처리 성능을 극대화할 수 있습니다. 1. 동시성 문제 여러 트랜잭션이 동시에 수행될 때 다음과 같은 문제가 발생할 수 있습니다. 2. 동시성 제어 기법 동시성 문제를 해결하기 위해 여러 기법이 사용됩니다. (1) 락킹 (Locking) 트랜잭션이 … Read more

팬텀 충돌(Phantom Conflict)

팬텀 충돌(Phantom Conflict)

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

오라클 Lock (트랜젝션 동시성 제어)

오라클 Lock (트랜젝션 동시성 제어)

오라클에서 Lock(잠금)은 여러 사용자가 동시에 같은 데이터에 접근할 때 데이터의 무결성을 보장하고 경합을 방지하기 위해 적용되는 메커니즘입니다. 오라클 Lock은 크게 DML Lock, DDL Lock, System Lock, 그리고 Latch(래치) 및 내부 잠금 메커니즘으로 분류됩니다. 참고로, 오라클은 읽어올 때 최소단위가 Block단위이고, 한 블록에 여러 Row가 적재되어 있으므로, 한 Row에 Update를 하더라도, 같은 Block에 Lock이 걸리면 영향이 없는 … 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 Limiting(행 제한)

ROW Limiting(행 제한)

쿼리 성능 향상을 위해 필수적인 기법인 Row Limiting은 SQL 쿼리에서 특정 개수의 행(Row)만 조회하도록 제한하는 기법을 의미합니다. 주로 부분범위처리를 할때 사용합니다. 예전엔 where절에 rownum 조건으로 제한하곤 했는데, 오라클 12C 이상 버전부터 새로운 기능이 추가되어 기본적인 사항부터 차근차근 한번 알아보고자 합니다. Oracle에서 Row Limiting(행 제한)을 설정하는 방법은 Oracle 버전에 따라 다르게 적용됩니다. 최신 버전(Oracle 12c 이상)에서는 … Read more