DB/친절한 SQL 튜닝 3

3. 인덱스 튜닝

3.1 테이블 액세스 최소화 sql 튜닝은 랜덤 I/O와의 전쟁이다. 그만큼 랜덤 I/O 줄이는 것이 중요 테이블 랜덤 액세스 최소화 하는 구체적인 방법을 소개 3.1.1 테이블 랜덤 액세스 인덱스로 검색하는데 왜 느릴까? 인덱스로 검색해도 빠른데, 왜 굳이 파티셔닝을할까? 인덱스 ROWID는 물리적 주소? 논리적 주소? sql이 참조하는 컬럼을 인덱스가 모두 포함하는 경우가 아니면, 인덱스를 스캔한 후에 반드시 테이블을 액세스한다. TABLE ACCESS BY INDEX ROWID 인덱스를 스캔하는 이유 : 검색 조건을 만족하는 소량의 데이터를 인덱스에서 빨리 찾고 테이블 레코드를 팢아기기 위한 주소값, ROWID를 얻으러고 하는데 있다. rowId는 물리적 주소일까, 논리적 주소일까? 논리적 주소에 ..

2. 인덱스 기본

2.1 인덱스 구조 및 탐색 인덱스 구조와 탐색 원리를 설명 인덱스의 기본 구조와 탐색 원리조차 모르는 개발자가 많다. 강조하고 싶은 내용 : 인덱스 참색 과정이 수직적 탐색과 수평적 탐색 단 2개로 이뤄진다. 이것을 이해하면 막연한 인덱스 구조에 대해 그림이 명확해진다. 2.1.1 미리 보는 인덱스 튜닝 데이터를 찾는 2 가지 방법 full scan index scan 정렬 data 위치를 알려줌 데이터베이스 테이블에서 데이터를 찾는 방법 테이블 전체를 스캔한다. 인덱스를 이용한다. 인덱스와 관련해서 튜닝 요소가 매우 많고 기법도 다양하다. 인덱스 튜닝의 2가지 핵심요소 2가지 이지만 실제로는 컬럼이 여러개 일 경우 index가 된 column 순서가 중요 (성능이 달라짐) 인덱스 스캔 과정에서 발생하..

1. SQL 처리과정과 I/O

1.1 SQL 파싱과 최적화 1.1.1 구조적 집합적 선언적 질의 언어 용어 sql: structured Query Language (구조적 질의 언어) 사용자 → 옵티마이저 → 프로시저 sql 옵티마이저 : 프로시저를 만들어내는 dmbs 내부 엔진 == 프로그래밍을 대신해 주는 역할 SQL 최적화 : DBMS 내부에서 프로시저를 작성하고 컴파일해서 실행 가능한 상태로 만드는 전 과정 1.1.2 SQL 최적화 sql 최적화 과정 세분화 SQL 파싱 (sql 파서) 파싱 트리 생성 : sql문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성 syntax 체크 : 문법적 오류가 없는지 확인 semantic 체크 : 의미상 오류가 없는지 확인 SQL 최적화 (옵티마이저) - 1.1.3 자세한 설명 옵티마이저..