티스토리 뷰
반응형
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
링크
TAG
- javascript
- html #웹 #웹사이트 #플레이리스트
- 2024인프콘
- 리눅스
- 프로그래머스
- oauth
- html
- authorization_code
- oauth2.0
- DDL
- 로스트아크 캐릭터
- SpringBoot
- SQL
- 데이터베이스
- git 예전 커밋 수정
- 데이터3법
- git commit 수정
- CSS
- DML
- authorization code
- 인프콘2024
- 데이터 3법
- kloa
- git
- 클로아
- 오픈소스
- bfs
- 우분투
- infcon 2024
- Android Studio
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함