MSSQL - 저장 프로시저의 개념, 장점, 실행 과정 (Stored Procedure)

이 포스팅은...

저장 프로시저의 기본적인 개념을 설명하는 포스팅입니다.


사용자 저장 프로시저의 사용방법을 알고싶다면 아래의 포스팅을 참고해주세요.

 

MSSQL - 사용자 저장 프로시저의 사용 방법(생성/호출/수정/삭제) (Stored Procedure)

저장 프로시저에 대한 자세한 설명은 아래의 포스팅을 참고해주세요. https://luvris2.tistory.com/381 MSSQL - 저장 프로시저의 개념, 사용 방법(생성/호출/수정/삭제) (Stored Procedure) 저장 프로시저란? (Store

luvris2.tistory.com

사용자 저장 프로시저의 매개변수 활용 방법은 아래의 포스팅을 참고해주세요.

 

MSSQL - 프로시저 매개변수(IN/OUT) 입력, 출력 활용하기

INPUT : 입력 매개변수 변수 선언시 디폴트 값 입력한 값을 프로시저 내에서 사용 할 수 있게 해주는 변수 입력 매개변수 구문 기존의 프로시저 생성 구문과 같음 IN 키워드를 생략해도 기본 값은 I

luvris2.tistory.com


저장 프로시저란? (Stored Procedure)

  • 일련의 쿼리문을 함수처럼 실행하기 위한 쿼리의 집합
  • 프로시저라고도 부름 (해당 포스팅에서는 프로시저라고 사용)

프로시저의 장점 

  • 입력 매개 변수, 출력 매개 변수, 리턴 값 사용 가능
  • 작성된 쿼리문을 재사용시 보다 빠른 성능을 제공
    • 일반 쿼리 : 실행시마다 컴파일
    • 프로시저 : 반복 실행시 캐시 메모리를 사용하여 실행 (컴파일 X)
  • 보안 강화
    • 사용자가 데이터에 직접 접근하는 것이 아닌 프로시저를 이용하여 데이터 접근
  • 네트워크 트래픽 감소
    • 클라이언트와 서버가 오고가는 긴 쿼리를 프로시저의 이름과 매개 변수로 바꿔서 전송

프로시저의 종류

시스템 저장 프로시저

  • 'sp_'로 시작하며 대부분 master 데이터베이스에 있음
  • 프로그래밍 언어의 내장 라이브러리와 비슷
    • 자주 쓰이는 것들을 미리 생성
    • 시스템 테이블 접근시 안전한 작업을 위해 생성
  • 예시) 테이블의 정보 확인 (sp_tables)
EXEC sp_tables

반응형

사용자 저장 프로시저

  • 사용자가 직접 정의하여 생성
  • 가능한 시스템 프로시저와 혼동이 있는 'sp_' 로 시작하는 프로시저명은 권장하지 않음

확장 저장 프로시저

  • 'xp_'로 시작하며 실제 SQL 서버의 프로시저가 아닌 DLL로 구현된 외부 함수
  • SQL에서 구현하기 어려운 것을 DLL로 만들어 사용

원격 저장 프로시저

  • 다른 SQL 서버에 있는 프로시저
  • 다른 SQL 서버 입장에서는 사용자 프로시저와 동일

 

해당 포스팅에서는 사용자 저장 프로시저에 대해서 알아봅니다.


쿼리 수행 과정

실행 과정 설명

  • 구문 분석 : 키워드를 분리하고 문법 검사
  • 표준화 : 각 객체의 이름 확인
  • 보안 점검 : 사용자가 권한이 있는지 검사
  • 최적화 : 빠른 성능을 위해 색인, 조인, 잠금 등에 대한 것을 결정
  • 컴파일

일반 쿼리문 실행 과정

  • 첫 실행
    • 구문 분석 > 표준화 > 보안 점검 > 최적화 > 컴파일
  • 반복 실행
    • 캐시 메모리 확인, 이전에 입력한 모든 조건이 맞으면 실행
    • 캐시 메모리에 없거나 한 글자라도 틀리면 첫 실행의 과정 수행

프로시저 실행 과정

  • 프로시저 생성 (정의)
    • 구문 분석 > 표준화 > 보안 점검
  • 첫 실행
    • 보안 점검 > 최적화 > 컴파일
  • 반복 실행
    • 캐시 메모리 확인, 프로시저 존재시 컴파일 없이 그대로 실행
    • 캐시 메모리에 프로시저 미존재시 첫 실행의 과정 수행

프로시저 실행하기

  • EXEC 키워드 뒤에 프로시저명 기재
  • 프로시저가 사전에 정의되어 있어야 사용 가능
-- 해당 프로시저 실행
EXEC 프로시저명

-- 매개변수가 필요한 프로시저 실행
EXEC 프로시저명 매개변수1, 매개변수2 ...