Topic

Stored Procedure vs Procedure

JackerLab 2025. 4. 20. 16:31
728x90
반응형

개요

데이터베이스에서 반복적이고 복잡한 로직을 처리하기 위해 사용되는 저장 프로시저(Stored Procedure)와 프로시저(Procedure)는 SQL의 강력한 기능 중 하나입니다. 일반적으로 'Stored Procedure'는 DB에 저장되는 모든 프로시저를 의미하지만, 시스템에 따라 일반 Procedure(비저장 함수형 호출)와 구분되기도 합니다. 이 글에서는 Stored Procedure의 개념, 일반 Procedure와의 구분, 구조, 장단점, 실무 활용 전략을 중심으로 설명합니다.


1. 개념 및 정의

용어 설명 특징
Procedure 데이터베이스 또는 프로그래밍 언어에서 정의된 일련의 명령 블록 선언 후 직접 실행 가능
Stored Procedure 데이터베이스에 저장되어 반복 호출 가능한 Procedure DB 객체로 저장, 재사용 가능

Stored Procedure는 명시적으로 DB에 저장되며, 트리거, 스케줄, 외부 애플리케이션에서 직접 호출될 수 있습니다.


2. 구조 및 예시

-- Stored Procedure 예시 (MySQL)
DELIMITER //
CREATE PROCEDURE GetEmployee(IN empId INT)
BEGIN
    SELECT * FROM employees WHERE id = empId;
END //
DELIMITER ;

-- 호출 방법
CALL GetEmployee(1001);
  • CREATE PROCEDURE: 저장 프로시저 정의
  • CALL: 호출 시 사용
  • IN/OUT 파라미터 지정 가능 (IN, OUT, INOUT)

3. 특징 및 비교

항목 Procedure Stored Procedure
저장 위치 세션 혹은 애플리케이션 메모리 DB에 영구 저장
호출 방식 즉시 실행 CALL 또는 트리거 등에서 호출
재사용성 한정적 고도 재사용 가능
성능 일시적 실행 캐시 효과로 반복 호출 시 유리
관리 애플리케이션 단위 관리 DB 관리툴에서 직접 관리 가능

대부분의 DBMS에서는 'Procedure' = 'Stored Procedure'로 간주하며, 비저장 방식은 PL 언어나 임시 코드에서 사용됩니다.


4. 장단점

구분 장점 단점
Stored Procedure 비즈니스 로직 DB로 집중, 성능 최적화, 보안 강화 디버깅 및 테스트 어려움, 앱 코드와 분리됨
일반 Procedure 애플리케이션과 밀접, 개발 유연성 ↑ 재사용/보안/성능 측면에서 불리함

Stored Procedure는 대규모 시스템에서 로직 분산 및 성능 향상을 위한 핵심 컴포넌트입니다.


5. 실무 활용 전략

전략 설명 효과
복잡 로직 분리 비즈니스 로직을 프로시저로 이관 애플리케이션 코드 간소화
트랜잭션 처리 BEGIN/COMMIT/ROLLBACK 포함 일관된 데이터 처리 보장
보안 정책 반영 직접 SQL 접근 제한, 프로시저 통해만 수행 권한 제어 강화
배치/예약 작업 이벤트 기반 실행 스케줄러 + Procedure 연계

Stored Procedure는 백엔드 로직을 안정적으로 관리할 수 있는 DB 중심의 설계 전략입니다.


6. 결론

Stored Procedure는 단순한 SQL 명령의 집합이 아니라, 데이터베이스 레벨에서 비즈니스 로직을 효과적으로 관리하고 재사용하기 위한 핵심 구조입니다. 일반 Procedure와 구분하여 활용하는 전략은 성능, 보안, 유지보수 측면에서 큰 차이를 만들 수 있습니다. 고성능 트랜잭션 시스템일수록 Stored Procedure 중심의 구조가 효과적입니다.

728x90
반응형

'Topic' 카테고리의 다른 글

인덱스(Index)  (0) 2025.04.20
SQL 힌트(Hint)  (0) 2025.04.20
내장 SQL(Embedded SQL)  (0) 2025.04.20
Statement vs Prepared Statement  (0) 2025.04.20
정적 SQL vs 동적 SQL(Static SQL vs Dynamic SQL)  (0) 2025.04.20