티스토리 뷰

반응형

SQL을 실행하기 전 최적화 과정

 

1. SQL 파싱

  • 파싱 트리 생성: SQL 문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성
  • Syntax 체크: 문법적 오류가 없는지 확인
  • Semantic 체크: 의미상 오류가 없는지 확인

 

2. SQL 최적화

  • 옵티마이저가 실행계획 세우는 것
  • 다양한 실행경로 중 가장 효율적인 하나 선택
  • 데이터베이스 성능을 결정하는 가장 핵심적인 엔진

 

3. 로우 소스 생성

  • SQL 옵티마이저가 선택한 실행경로를 실제 실행 간으한 코드 또는 프로시저 형태로 포맷팅 하는 단계

 

 

 

논리적 I/O vs 물리적 I/O

 

논리적I/O: SQL을 처리하는 과정에 발생한 총 블록I/O(메모리 I/O)

물리적I/O: 디스크에서 발생한 총 블록I/O(버퍼캐시에서 못 찾았을 때)

 

버퍼캐시 히트율(Buffer Cache Hit Ratio, BCHR)

= (1 - 물리적I/O / 논리적I/0) * 100

 

물리적 I/O가 성능을 결정하지만, 실제 SQL 성능을 향상하려면 물리적I/O가 아닌 논리적 I/O를 줄여야한다

 

물리적I/O = 논리적I/O * (100% - BCHR)이기때문에

논리적I/O를 줄이면 물리적I/O도 줄어듬

 

논리적 I/O를 줄임으로써 물리적 i/o를 줄이는 것이 곧 SQL 튜닝이다

 

 

Table Full Scan vs Index Range Scan

 

다량의 데이터를 읽을때는 Table Full Scan이 좋다

Sequential Access와 Multiblock I/O 방식이기 때문에

 

큰 테이블에서 아주 적은 일부 데이터를 찾을때는 Index Range Scan이 좋다

Random Access와 Singleblock I/O 방식이기 때문이다

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함