쏭의 개발 블로그
[DB] 저장 프로시저 본문
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
'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 |