본문 바로가기
공부/정보처리기사

[11-1] 절차형 SQL

by Lagooni 2021. 10. 9.

절차형 SQL: 절차형 SQL이란? 일반적인 개발 언어처럼 SQL언어에서도 절차 지향적인 프로그램이 가능하도록 하는 트랜잭션 언어이다.

절차형 SQL 종류

  • 프로시저(Procedure): 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
  • 사용자 정의함수(User-Definde Function): 일련의 SQL처리를 수행하고, 수행결과를 단일 값으로 반환할 수 있는 절차형 SQL
  • 트리거(Trigger): 데이터베이스 시스템에서 삽입, 삭제, 갱신 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL

프로시저의 구성 (디비컨SET)

  • 선언부(DECLARE): 프로세스의 명칭, 변수와 인수 그리고 그에 대한 데이터 타입을 정의하는 부분
  • 시작/종료부(BEGIN/END): 프로시저의 시작과 종료를 표현하며 BEGIN과 END가 쌍을 이룸
  • 제어부(CONTROL): 조건문과 반복문을 이용하여 문장을 처리
  • SQL: DML을 주로 사용
  • 예외부(EXCEPTION): BEGIN~END절에서 실행되는 SQL문이 실행될 때 예외 발생 시 예외 처리 방법을 정의하는 처리부
  • 실행부(TRANSACTION): 프로시저에서 수행된 DML수행 내역의 DBMS의 적용 또는 취소 여부를 결정하는 처리부

사용자 정의함수의 구성 (디비컨 SER)

  • 선언부(DECLARE)
  • 시작/종료부(BEGIN/END)
  • 제어부(CONTROL)
  • SQL
  • 예외부(EXCEPTION)
  • 반환부(RETURN)

트리거(TRIGGER)의 목적: 특정 테이블에 대한 데이터 변경을 시작점으로 설정하고, 그와 관련된 작업을 자동적으로 수행하기 위해 트리거를 사용한다; 데이터 무결성 유지 및 로그 메시지 출력 등의 별도 처리를 위해 트리거를 사용한다.

  • 행 트리거: 데이터 변화가 생길 때마다 실행
  • 문장 트리거: 트리거에 의해 단 한 번 실행

트리거의 구성 (디이비컨 SE)

  • 선언부(DECLARE)
  • 이벤트부(EVENT)
  • 시작/종료부(BEGIN/END)
  • 제어부(CONTROL)
  • SQL
  • 예외부(EXCEPTION)

옵티마이저(Optimizer): 옵티마이저는 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심 엔진이다.

옵티마이저가 생성한 SQL처리경로를 실행계획(Execution Plan)이라고 부른다.

옵티마이저 유형

비교 규칙기반 옵티마이저(RBO; Rule Based Optimizer) 비용기반 옵티마이저(CBO; Cost Based Optimizer)
개념 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택하는 옵티마이저 통계 정보로부터 모든 접근 경로를 고려한 질의실행 계획을 선택하는 옵티마이저
핵심 규칙 기반 비용 기반
평가기준 인덱스 구조, 연산자 ,조건절 형태 등 레코드 개수, 블록 개수, 평균 행 길이 등
장점 사용자가 원하는 처리경로로 유도하기 쉬움 옵티마이저의 이해도가 낮아도 성능보장 가능

SQL수행 시 옵티마이저 역할

  • 쿼리 변환(Query Transformer): SQL을 좀 더 일반적이고 표준화된 형태로 변환
  • 비용 산정(Estimator): 쿼리 명령어 각 단계의 선택도, 카디널리티, 비용을 계산
  • 계획 생성(Plan Generator): 하나의 쿼리를 수행 시 후보군이 될 만한 실행계획들을 생성해내는 역할

댓글