일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- HashMap
- Python
- BFS
- dfs
- Java
- 다리 만들기
- DP
- 다이나믹프로그래밍
- LIS
- 아스키코드
- 스택
- Queue
- 문자열
- 시뮬레이션
- oracle
- 배열
- 브루트포스
- BufferedReader
- 빅데이터
- Stack
- 그리디
- SQL
- 프로그래머스
- 새벽코딩
- 완전탐색
- 알고리즘
- 탐색
- 백준
- 백트래킹
- 구현
- Today
- Total
새벽코딩
[SQL 튜닝] 1. 최적화 본문
SQL튜닝의 첫단계는 실행계획을 어떻게 세우냐에 달려있다고 해도 과언이 아니다.
이 실행계획을 담당하는 옵티마이저는 DBMS 서버 내부에서 프로시저를 만드는 것을 담당한다.
정리하자면, DBMS 내부에서 프로시저를 작성하고, 컴파일하여 실행가능한 상태(실행계획)를 만드는
전 과정을 'SQL 최적화' 라고 한다.
최적화는 다음과 같은 순서로 진행된다.
1. SQL 파싱
1) 파싱 트리 생성 : SQL 문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성.
2) Syntax 체크 : 문법적 오류가 없는지 확인.
3) Semantic 체크 : 의미상 오류가 없는지 확인.
2. SQL 최적화
본격적인 SQL 최적화에 옵티마이저가 역할을 맡는다. 옵티마이저는 여러 실행경로중 하나를 선택한다.
3. 로우 소스 생성
옵티마이저가 선택한 실행경로를 실제 실행 가능한 코드 또는 프로시저 형태로 포맷팅 하는 단계
[옵티마이저]
1) 사용자가 입력한 쿼리문을 수행하는데 후보군이 될 실행계획들을 찾아낸다
2) 데이터 딕셔너리에 미리 수집해 둔 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상비용 선정
3) 최저비용의 실행계획 선정
[실행 예상 비용]
쿼리문 이 실행되는데 가장 최소한의 CPU 이용비용을 나타낸다. 이 비용은 미리 설정해둔 인덱스 중 현재 선택된 쿼리에 가장 적합한 하나가 선택되어 측정된다.
[비용 계산 원리]
비용 계산을 위해서는 선택도라는 개념을 사전에 알고 있어야한다.
[선택도]
이는 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율을 뜻한다. 1 : 1 조건에서의 선택도는 이와 같이 구한다.
(1 / 컬럼 값 종류 개수)
[카디널리티]
전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수.
카디널리티 = 총 로우 수 x 선택도 = 총 로우 수 / 컬럼 값 종류 개수
'DB 모델링 & SQL' 카테고리의 다른 글
[프로그래머스] 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2023.03.30 |
---|---|
[프로그래머스] 보호소에서 중성화한 동물 / 입양 시각 구하기(2) / 우유와 요거트가 담긴 장바구니 (ORACLE) (0) | 2023.03.28 |
[SQLP] SQL 기본과 활용 - 함수 (0) | 2022.02.03 |
[SQLP] SQL 기본과 활용 - 데이터 유형 (0) | 2022.02.03 |
[DB모델링] ERD 툴 선택 및 그리기 (0) | 2022.01.12 |