본문 바로가기
  • Round and Round

sqlp 공부 정리5

[SQLP] 2-3. 인덱스 스캔 방식 🧷 인덱스 스캔 방식🖇️ Index Range Scan인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 후, 리프 블록에서 필요한 범위만 스캔하는 방식 B * Tree 인덱스에서 가장 일반적이고 정상적인 형태의 액세스 방식이다. 인덱스를 수직적으로 탐색한 후 리프 블록에서 필요한 범위만 스캔하는데, 이것은 범위 스캔을 의미한다.  Index Range Scan이 동작하려면 인덱스를 구성하는 선두 컬럼이 WHERE 조건절에 포함되어야 한다. 그렇지 않은 상태에서 힌트를 사용해 인덱스를 강제로 적용하면 Index Full Scan 방식으로 처리될 수 있다. 반대로, 선두 컬럼을 가공하지 않으면 무조건 Index Range Scan이 발생하기 때문에 인덱스를 사용한다고 해서 항상 성능이 좋은 것은 아니.. 2025. 3. 5.
[SQLP] 2-2. 인덱스 활용 🧷 인덱스 활용데이터베이스 성능 최적화를 위해 인덱스를 활용하는 것은 매우 중요하다. 하지만 인덱스를 어떻게 활용하느냐에 따라 실제 성능 향상 효과가 달라진다.🖇️ 인덱스 스캔 방식인덱스는 정렬되어 있기 때문에, 리프(Leaf) 블록에서 스캔 시작점부터 더 이상 데이터가 없는 지점까지 중간에 스캔을 중단할 수 있다. 이러한 경우를 Index Range Scan이라고 하며, 이는 스캔 시작점과 종료점을 명확히 파악하여 필요한 부분만 읽어 들임을 의미한다. 반면, 인덱스 전체를 순차적으로 스캔하는 경우를 Index Full Scan이라고 한다.(1) Index Range ScanSELECT EMPNOFROM EMPWHERE NAME LIKE 'ABD%'Leaf 블록[ABC] [ABE] [ABF] .. 2025. 2. 23.
[SQLP] 2-1. 인덱스 구조 🧷 인덱스 구조🖇️ 인덱스 튜닝온라인 트랜잭션 처리(OLTP) 시스템에서는 소량의 데이터를 빠르게 검색하는 것이 중요하다. 따라서 대규모 테이블에서 소량의 데이터를 효율적으로 검색할 수 있도록 인덱스를 최적화하는 튜닝이 필수적이다. 인덱스 스캔 과정에서 성능을 결정하는 요소는 여러 가지가 있지만, 핵심적으로 고려해야 할 두 가지 요소는 다음과 같다. ✔️ 핵심 요소인덱스 스캔 효율화 튜닝인덱스 스캔 과정에서 불필요한 연산을 최소화하는 것이 중요하다.인덱스 정렬 방식과 접근 방식을 최적화하여 스캔 횟수를 줄이는 것이 핵심이다.랜덤 액세스 최소화 튜닝인덱스 스캔 후 테이블 데이터를 가져올 때 랜덤 I/O를 최소화해야 한다.테이블 접근 횟수를 줄이면 디스크 I/O 부담을 줄일 수 있어 성능 향상에 직접적인.. 2025. 2. 22.
[SQLP] 1-3. SQL 공유 및 재사용 🧷 SQL 공유 및 재사용🖇️ 소프트 파싱 VS 하드 파싱SGA(System Global Area)는 서버 프로세스와 백그라운드 프로세스가 공통적으로 액세스 하는 데이터와 제어구조를 캐싱하는 메모리 공간이다. SGA 구성요소 중에 SQL파싱, 최적화, 로우 소스 생성 과정을 거쳐 생성한 내부 프로시저를 반복 재사용할 수 있도록 캐싱해 두는 공간을  라이브러리 캐시(Library Cache) 이라고 한다.  소프트 파싱(Soft Parsing) : SQL 파싱 후 라이브러리 캐시에 해당 SQL이 존재하면 바로 실행한다.하드 파싱(Hard Parsing) : 라이브러리 캐시에 SQL이 존재하지 않으면 최적화 및 로우 생성 과정을 거친다.하드 파싱이 느린 이유   하드 파싱(Hard Parsing)은 옵티.. 2025. 2. 9.
[SQLP] 1-2. SQL 파싱과 최적화 🧷 SQL 파싱과 최적화🖇️ SQL 이란?SQL : Structured Query Language SQL은 데이터베이스에서 데이터를 질의, 조작, 정의, 제어하기 위한 구조적(Structured)이고 집합적(Set-Based)이며 선언적(Declarative)인 언어이다. 오라클 PL/SQL, SQL Server T-SQL처럼 절차적(Procedural) 프로그래밍 기능을 제공하는 확장 언어도 있지만, SQL은 집합 기반의 결과를 얻기 위한 선언적 언어이다. 사용자는 SQL을 통해 원하는 데이터 결과를 선언하지만, 그 결과 집합을 만드는 과정은 절차적일 수밖에 없다. 이러한 과정을 처리하는 DBMS 내부 엔진이 바로 SQL 옵티마이저(Optimizer)이며, 사용자가 작성한 SQL을 효율적으로 처리할.. 2025. 2. 9.