쏭의 개발 블로그

[DB] 저장 프로시저 본문

DB

[DB] 저장 프로시저

songu1 2023. 2. 11. 16:45

1. 저장프로시저란?

일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합

  • DB에 대한 작업을 정리한 절차를 RDBMS에 저장한 쿼리의 집합

특징

  • 영구저장모듈
  • SQL 서버에서 제공되는 프로그래밍 기능. 쿼리문의 집합
  • 어떠한 동작을 일괄처리하기 위한 용도로 사용
  • 자주 사용되는 일반적인 쿼리를 모듈화시켜서 필요할 때마다 호출
  • 테이블 처럼 각 데이터베이스 내부에 저장

 

2. 저장프로시저 문

오라클 기준

생성

CREATE OR REPLACE PROCEDURE 프로시저명(변수명1,변수명2,...)
IS
	변수
BEGIN
	SQL;
END 프로시저명;

호출

EXEC 프로시저명;

삭제

DROP PROCEDURE 프로시저명;

3. 저장 프로시저의 장단점

1) 장점

(1) SQL 서버의 성능 향상

  • 저장 프로시저의 2번째 실행부터는 캐시(메모리)에 있는 것을 가져와서 사용⇒ 여러개의 쿼리를 한번에 실행 가능
  • 속도 향상

(2) 유지보수 및 재활용

  • 수정요건이 발생할 때 코드 내 SQL문을 건드리는 것이 아니라 저장프로시저 파일만 수정하면 되므로 유지보수 측면에서 유리
    • 저장프로시저 수정으로 조회, 수정, 추가 등 가벼운 소스 변경이 가능
  • 한번 생성해놓으면 언제든 실행가능 → 재활용 측면에서 좋음

(3) 보안 강화 - 권한 체계

  • 저장프로시저에만 접근 권한을 줌으로써 테이블의 모든 정보를 사용자에게 노출하지 않고 프로시저에서 선택한 정보만 사용자에게 보여줄 수 있음

(4) 네트워크의 부하(전송량) 줄일 수 있음

  • 저장프로시저의 이름, 매개변수 등 몇글자만 전송하면 됨 → 부하를 줄임

 

2) 단점

(1) DB확장 어려움

  • 서비스 사용자수가 많아서 서버 수를 늘려야 할 때 DB의 수를 늘리는 것이 어려움
  • DB 교체는 거의 불가능

(2) 데이터 분석의 어려움

  • 개발된 프로시저가 여러 곳에서 사용될 경우 수정 시 영향 분석이 어려움
  • 배포, 버전 관리 등의 이력관리 어려움
  • 에러가 생겨도 해당 이슈에 대한 추적이 힘듦

(3) 낮은 처리 성능

  • 문자, 숫자 연산에 사용시 오히려 C, Java보다 느린 성능을 보일 수 있음

 


https://gyoogle.dev/blog/computer-science/data-base/Stored%20PROCEDURE.html

https://velog.io/@sweet_sumin/저장-프로시저-Stored-Procedure

'DB' 카테고리의 다른 글

DB 커넥션 풀의 용도와 필요  (0) 2025.03.16
[DB] 트리거(Trigger) 간단 정리  (0) 2023.02.11
[DB] SQL injection  (0) 2023.02.11
[DB] Redis  (0) 2023.02.11
[DB] Transaction Isolation Level 트랜잭션 고립수준  (1) 2023.02.01