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