-
[DB] 저장 프로시저 (Stored Procedure)의 개념과 예시DB/DB Basic 2023. 6. 12. 17:11반응형
저장 프로시저 (SP, Stored Procedure)란?
: 준비된 SQL문으로, 재사용이 가능하도록 저장한 SQL문을 의미
- 매개변수를 설정할 경우, 매개변수의 값에 따라 SQL문을 실행시킬 수 있음사용 이유
1. 성능 향상
- SP 생성 이후, 첫 실행을 하게 되면 최적화, 컴파일 단계를 거쳐 그 결과를 캐시(메모리)에 저장
- 이 후 해당 SP 실행시 캐시(메모리)에 있는 결과를 가져와 사용하므로 실행 속도가 향상됨
- 실행 계획이 이미 최적화되어 있기 때문에, SQL문을 매번 구문 분석하고 최적화하는 오버헤드를 줄일 수 있음2. 유지보수 및 재사용성 향상
- SP 사용시 복잡한 로직과 비즈니스 규칙을 DB내에 캡슐화 할 수 있음
- 여러 어플리케이션이나 스크립트에서 동일한 SP 호출할 수 있으므로 코드 중복을 줄이고 유지 관리성을 향상시킴
- 또한 로직을 중앙 집중화된 위치에 저장하기 때문에 SP를 수정하더라도 애플리케이션 코드를 변경할 필요 없음3. 보안 강화
- 사용자별로 테이블에 권한을 주는것이 아닌 SP에만 접근 및 실행 권한을 줌으로써 테이블과 데이터를 보호할 수 있음
- 테이블과 데이터에 대한 직접적인 무단 접근을 방지하고 민감한 정보를 안전하게 보안 가능문제점
1. 복잡성
- 특정 데이터베이스 시스템과 SP를 작성하기 위한 절차적 언어(T-SQL, PL/SQL 등)에 대한 추가적인 이해 필요
- 일반적인 SQL문을 작성하는 것보다 복잡할 수 있음2. 벤더 종속성
- 각 데이터베이스 시스템마다 SP를 위한 문법과 기능이다름
- 다른 데이터베이스 시스템으로 전환시 SP를 다시 작성하거나 수정해야 함3. 성능 제한
- SP는 첫 실행시에만 최적화 단계를 수행함
- 이 단계에서 인덱스 스캔을 할 것인지 등을 결정하는데, 매개 변수에 따라 적합한 스캔 방식이 다를 수 있음
- 하지만 최초 실행시 설정된 최적화 단계를 자동적으로 수행하기 때문에 성능이 더 나쁜 방법으로 실행될 수 있음
- 이를 방지하기 위해, SP 생성 시점에서 실행시마다 다시 컴파일이 되도록 설정하는 방법을 사용함사용 예시
기본 문법
- 문법의 경우, 사용하는 데이터베이스 시스템에 따라 상이
-- 선언 CREATE PROCEDURE procedure_name AS sql_statement GO; -- 실행 EXECUTE procedure_name;
매개 변수가 1개 있을 때
-- 선언 CREATE PROCEDURE SelectAllCustomers @City nvarchar(30) AS SELECT * FROM Customers WHERE City = @City GO; -- 실행 EXECUTE SelectAllCustomers @City = 'London';
매개 변수가 여러 개 있을 때
-- 선언 CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10) AS SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode GO; -- 실행 EXECUTE SelectAllCustomers @City = 'London', @PostalCode = 'WA1 1DP';
반응형'DB > DB Basic' 카테고리의 다른 글
[DB] Transaction (1) 2024.02.24 [DB] Stored Procedure in 3-tier architecture : pros and cons (0) 2024.01.22 [DB] 스키마(Schema) 개념 및 계층 (0) 2023.05.18 [DB] 데이터 모델의 종류와 구성 요소 (엔티티, 속성, 관계) (0) 2023.05.17 [DB] DB 개념, 특징과 DBMS 종류 (RDBMS, NO SQL) (0) 2023.05.17