SQLD
SQLD자격증 관련
Snapshot too old(ORA-01555) in Oracle
Oracle “Snapshot too old” 오류와 해결 방법 📌 오류 개요 Oracle에서 “Snapshot too old” 오류는 UNDO 영역 부족으로 인해 발생하는 오류입니다.특히 긴 시간 실행되는 쿼리(대량 데이터 조회, 분석 쿼리 등)에서 많이 발생합니다. (쿼리가 오래 수행되는 동안 UNDO영역에 기존 수행중이던 쿼리에 대한 데이터가 삭제됨) 1. “Snapshot too old” 오류 원인 오라클은 트랜잭션의 일관성을 유지하기 위해 UNDO … Read more
비트맵 인덱스(Bitmap Index)
비트맵 인덱스(Bitmap Index)는 데이터베이스에서 인덱싱을 최적화하기 위해 사용하는 인덱스 기법 중 하나입니다. 비트맵 인덱스는 각 고유한 값에 대해 비트 배열(비트맵)을 생성하여 데이터를 효율적으로 검색할 수 있도록 합니다. 특히 값의 종류(카디널리티, Cardinality)가 적은 경우(예: 성별, 상태값, 부서 코드 등)에 매우 효과적입니다. (OLTP보단 OLAP에서 효과적) 1. 비트맵 인덱스의 동작 방식 비트맵 인덱스는 각 열(column)의 고유한 값(unique value)에 … Read more
버퍼 핀닝(Buffer Pinning)
버퍼 핀닝(Buffer Pinning)은 데이터베이스 시스템에서 특정 데이터 페이지를 버퍼 캐시에 고정하는 기술입니다. 즉, 버퍼 캐시에서 특정 페이지가 다른 페이지로 대체되지 않도록 보호하는 것입니다. 🔹 버퍼 핀닝의 개념 🔹 버퍼 핀닝이 필요한 경우 🔹 버퍼 핀 해제 (Unpinning) 🔹 버퍼 핀닝의 장점 ✅ 성능 향상: 자주 사용되는 데이터를 유지하여 디스크 I/O를 최소화.✅ 데이터 일관성 유지: 트랜잭션 … Read more
Oracle의 WITH 절 (Subquery Factoring)
Oracle의 WITH 절은 서브쿼리 팩터링(Subquery Factoring) 기능을 제공하여 복잡한 쿼리를 단순화하고 성능을 최적화하는 데 사용됩니다.이 절을 사용하면 서브쿼리를 여러 번 재사용하거나, 임시 데이터셋을 저장하여 쿼리 실행 성능을 향상할 수 있습니다. 1. WITH 절 기본 문법 WITH 서브쿼리_이름 AS ( SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 조건)SELECT * FROM 서브쿼리_이름; 🔹 주요 특징 2. WITH 절을 … Read more
Oracle FreeList (프리리스트)
1. FreeList란? FreeList(프리리스트)는 Oracle 데이터베이스에서 새로운 데이터가 삽입될 때 사용할 수 있는 빈 블록 목록입니다.즉, INSERT 작업이 수행될 때, 사용 가능한 공간이 있는 블록을 찾는 역할을 합니다. ✔ FreeList의 역할 2. FreeList 동작 방식 Oracle의 테이블이나 인덱스는 데이터를 저장할 때 블록(Block) 단위로 관리됩니다.새로운 데이터가 삽입될 때, FreeList에서 빈 블록을 먼저 검색하여 데이터를 저장하며, FreeList에 사용 … Read more
Consistent Mode vs. Current Mode in Oracle
Oracle 데이터베이스에서 데이터를 읽고 처리할 때, Consistent Mode(일관성 모드)와 Current Mode(현재 모드) 두 가지 방식이 존재합니다.이 모드는 쿼리의 실행 방식과 데이터 일관성을 유지하는 방법에 따라 결정됩니다. 1. Consistent Mode (일관성 모드) Consistent Mode(일관성 모드)는 쿼리 실행 시점의 일관된 데이터를 제공하는 방식입니다.즉, 쿼리가 시작된 시점의 SCN(System Change Number, 변경 번호) 기준으로 데이터를 반환합니다. ✅ 특징 📌 … Read more
클러스터 테이블(Clustered Table)
클러스터 테이블(Clustered Table)은 데이터가 물리적으로 클러스터링되어 저장되는 방식으로, 관련 데이터가 동일한 디스크 블록에 가깝게 저장되도록 하는 데이터베이스 테이블 유형입니다. 이를 통해 특정 쿼리 성능을 최적화할 수 있습니다. 1. 클러스터 테이블 개요 클러스터 테이블은 동일한 키 값을 가진 여러 행이 물리적으로 가까운 위치에 저장되도록 구성됩니다. 이는 I/O 성능을 향상시키고 디스크 읽기 비용을 절감하는 데 유용합니다. ✅ … Read more
팬텀 충돌(Phantom Conflict)
팬텀 충돌(Phantom Conflict, 팬텀 문제, Phantom Read)은 트랜잭션이 동일한 조건으로 여러 번 조회할 때, 다른 트랜잭션이 중간에 데이터를 삽입하거나 삭제하여 결과가 달라지는 현상을 의미합니다. 이는 반복 가능한 읽기(Repeatable Read) 수준에서도 발생할 수 있는 문제이며, Serializable(직렬화) 수준의 격리성을 적용해야 방지할 수 있습니다. ※ 팬텀 충돌의 내용은 DB를 배운 사람이면 모두 알 수 있는 내용일 텐데 용어가 … Read more
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