본문 바로가기
  • Round and Round

DB/SQLP9

[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-5. I/O 메커니즘 🧷 I/O 메커니즘🖇️ 블록 단위 I/O오라클을 비롯한 대부분의 DBMS에서 I/O는 블록(Block) 단위로 수행된다. 이는 특정 레코드를 읽거나 쓰기 위해 해당 레코드가 포함된 블록 전체를 읽고 써야 함을 의미한다. 오라클의 기본 블록 크기는 8KB이며, 단 1바이트를 읽더라도 최소 8KB를 읽어야 한다. 이 원칙은 테이블뿐만 아니라 인덱스에서도 동일하게 적용된다. 예를 들어, 다음 두 개의 SQL 문을 비교해 보자.SELECT COL FROM TBL WHERE NUM > 100;SELECT * FROM TBL WHERE NUM > 100; 두 쿼리가 동일한 실행 계획을 사용한다면, 서버에서 발생하는 I/O 작업량은 동일하다. 특정 레코드 하나만 읽더라도 해당 레코드가 포함된 블록 전체를 읽어야 .. 2025. 2. 11.
[SQLP] 1-4. 라이브러리 캐시 최적화 🧷 라이브러리 캐시 최적화🖇️ 바인드 변수1. SQL 공유 및 재사용 단점사용자 정의 함수/ 프로시저, 트리거, 패키지 등 의 경우 이러한 오브젝트들은 Stored Object로 분류되며, 생성 시 고유한 이름을 갖는다. 생성과 동시에 컴파일된 상태로 데이터 딕셔너리에 저장되며, 사용자가 삭제하지 않는 한 영구적으로 보관된다. 실행 시에는 라이브러리 캐시에 적재되어 여러 사용자가 공유하며 재사용할 수 있다.SQL의 경우 SQL은 Transient Object로 분류되며, 고유한 이름이 없고 SQL 텍스트 자체가 이름 역할을 한다. 데이터 딕셔너리에 저장되지 않고, 처음 실행 시 최적화 과정을 거쳐 동적으로 생성된 내부 프로시저가 라이브러리 캐시에 적재된다. 이를 통해 여러 사용자가 동일한 SQL을 공.. 2025. 2. 9.
[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.
[SQLP] 1-1. Oracle 아키텍처 🧷 Oracle 아키텍처Oracle 은 데이터베이스와 이를 액세스 하는 프로세스 사이에 SGA(System Global Area)라고 하는 공유 메모리 캐시 영역을 두어 구성된다.데이터베이스(Database) : 디스크에 저장된 데이터 집합으로, 주요 파일로는 데이터 파일(Datafile), Redo Log 파일, Control 파일이 포함된다.인스턴스(Instance) : SGA (공유 메모리 영역)와 이를 액세스 하는 프로세스 집합으로 구성된다.기본적으로 Oracle에서는 하나의 데이터베이스에 대해 하나의 인스턴스가 접근하지만, RAC(Real Application Cluster) 환경에서는 하나의 데이터베이스를 여러 개의 인스턴스가 동시에 액세스 할 수 있다. ✅ RAC (Real Applicat.. 2025. 2. 9.
[SQLP] 비전공자 개발자, 야근 하면서 6개월 만에 SQLP 합격 후기 및 공부 방법 (제 51회 시험) 📚 현재 회사를 다니면서 Copy & Paste 코드 짜기 반복과 사람 갈아버리는 업무 환경으로 인해 육체적으로 지치고 심적으로 우울해지는 일이 많았습니다. 그러다가 이렇게 부정적으로 살면서 나에게 안 좋은 영향을 주기보다는 반대로 생각하기로 했습니다. 여기라서 할 수 있는 일을 찾기로!! 그게 바로 SQL튜닝이었고, 이에 대해 깊게 파고들고자 SQLP 자격증 준비를 시작하였고 첫 번째 도전만에 합격이라는 결과물을 얻을 수 있었습니다.🖇️ SQLP 시험 준비 SQLP 은 1 ~ 3과목 필기 + 실기 시험으로 이루어져 있고 합격하기 위해서는 과목별 40% 이상의 점수(과락)와 총 75 점 이상 취득해야 합니다. 필기 과목에서는, 3과목 SQL 고급활용 및 튜닝에 대한 공부 범위가 정말 방대하고 난도가 높습니.. 2024. 10. 6.