절차형 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): 하나의 쿼리를 수행 시 후보군이 될 만한 실행계획들을 생성해내는 역할
'공부 > 정보처리기사' 카테고리의 다른 글
[13] 소프트웨어 개발 보안 구축 (소프트웨어 개발 보안 설계) (0) | 2021.10.12 |
---|---|
[12] 서버 프로그램 구현 (개발 환경, 형상 관리, 모듈) (0) | 2021.10.10 |
[11] SQL응용 -데이터베이스의 기본 (DDL, DML, DCL) (0) | 2021.10.08 |
[10] 프로그래밍 언어 활용 ,포인터, 오버로딩, 오버라이딩 (0) | 2021.10.06 |
[9] 인터페이스 구현 (0) | 2021.10.04 |
댓글