Cohe
7-3 절차형 SQL/ SQL 최적화 본문
728x90
반응형
절차형 SQL
- 절차형 SQL(Procedural SQL)의 개념
- SQL 언어에서도 절차 지향적인 프로그램이 가능하도록 하는 트랜잭션 언어
- 절차형 SQL의 종류
- 프로시저, 사용자 정의 함수, 트리거가 있다.
종류 | 설명 |
---|---|
프로시저(Procedure) | 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합 |
사용자 정의 함수 (User-Defined Function) |
특정 작업을 수행하는 사용자가 정의한 함수입니다. |
트리거(Trigger) | 데이터베이스 시스템에 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL |
SQL 최적화
1. 쿼리 성능 개선(튜닝)의 개념
- 쿼리 성능 개선 : 프로시저에 있는 SQL 실행 계획을 분석, 수정을 통해 최소의 시간으로 원하는 결과를 얻도록 프로시저를 수정하는 작업
- SQL 성능 개선을 통해 데이터 조작 프로시저의 성능이 가능하다.2. 쿼리 성능 개선 절차
순서 | 절차 | 설명 |
---|---|---|
1 | 문제 있는 SQL 식별 | • 문제 있는 SQL을 식별하기 위해 애플리케이션의 성능을 관리 및 모니터링 도구인 APM 등을 활용 |
2 | 옵티마이저 통계 확인 | • 옵티마이저는 개발자가 작성한 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 데이터베이스 핵심모듈 |
3 | SQL 문 재구성 | - 범위가 아닌 특정 값 지정으로 범위를 줄여 처리속도를 빠르게 함 • 옵티마이저가 비정상적인 실행계획을 수립할 경우, 힌트(Hint)로서 옵티마이저의 접근 경로 및 조인(Join) 순서를 제어 |
4 | 인덱스 재구성 | • 성능에 중요한 액세스 경로를 고려하여 인덱스(Index) 생성 • 실행계획을 검토하여 기존 인덱스의 열 순서를 변경/추가 |
5 | 실행계획 유지관리 | 데이터베이스 버전 업그레이드, 데이터 전환 등 시스템 환경의 변경 사항 발생 시에도 실행계획이 유지되고 있는지 관리 |
3. 옵티마이저 통계 확인
- 옵티마이저의 개념
- 옵티마이저는 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심엔진이다.
- 옵티마이저가 생성한 SQL 처리경로를 실행계획(Execution Plan)이라고 부른다.
- 옵티마이저의 유형
- 옵티마이저의 유형으로는 RBO(Rule Based Optimizer)와 CBO(Cost Based Optimizer)가 있다
항목 | 규칙기반 옵티마이저 | 비용기반 옵티마이저 |
---|---|---|
개념 | 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택하는 옵티마이저 | 통계 정보로부터 모든 접근 경로를 고려한 질의 실행 계획을 선택하는 옵티마이저 |
핵심 | 규칙(우선순위) 기반 | 비용(수행 시간) 기반 |
평가기준 | 인덱스 구조, 연산자, 조건절 형태 | 코드 개수, 블록 개수, 평균 행 길이, 컬럼 값의 수, 컬럼 값 분포, 인덱스 높이, 클러스터링 팩터 등 |
장점 | 사용자가 원하는 처리경로로 유도하기가 쉬움 | 옵티마이저의 이해도가 낮아도 성능 보장 가능 (기본 설정) |
728x90
반응형