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

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

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

IOT(Indexed Organized Table)

IOT(Indexed Organized Table)

Oracle의 IOT(Indexed Organized Table) 테이블은 B-tree 인덱스 구조를 기반으로 데이터를 저장하는 특수한 테이블입니다. 일반 테이블(Heap Organized Table)과는 다르게, 기본 키(Primary Key)를 기반으로 데이터를 정렬하여 저장합니다. 📌 IOT 테이블 특징 📌 IOT 테이블 생성 방법 CREATE TABLE iot_table ( id NUMBER PRIMARY KEY, name VARCHAR2(100), age NUMBER) ORGANIZATION INDEX; 📌 IOT 테이블 성능 튜닝 📌 IOT … 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

ROW Limiting(행 제한)

ROW Limiting(행 제한)

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

버퍼락 (Buffer Lock, Oracle ver)

버퍼락 (Buffer Lock, Oracle ver)

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