-
[CS] 저장 프로시저(Stored Procedure)의 정의와 활용CS 2023. 4. 27. 09:16
1. 함수(Function)란?
- DB 내에서 제공되는 모듈(대부분 수식을 통한 내부 계산, SQL문 사용 X)
- 반드시 리턴값이 존재
- 클라이언트에서 서버에 필요한 값을 요청 받은 후 Local 실행
- SQL문 안에서 실행이 가능하다 ex) SELECT 함수명() FROM DUAL;
2. 저장 프로시저(Stored Procedure)란?
- SP(Stored Procedure)는 일련의 쿼리문을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
- 호출 시 DB에서 실행해서 요청한 CLIENT(혹은 미들 서버)로 돌려준다.
- 리턴 값이 존재할수도, 존재하지 않을 수도 있다.
- 저장 프로시저는 그 자체가 쿼리문의 집합체기 때문에 SQL문에서 사용 불가
- SP를 최초 실행하면 최적화, 컴파일 단계를 거쳐 그 결과가 캐싱으로 저장된다.
- 그 후 같은 SP를 호출할 경우 캐싱된 메모리를 가져와 사용하므로 SQL구문 해석 과정이 필요 없어 실행 속도가 빠르다.
3. 일반 SQL문과 저장 프로시저와의 차이
[일반적인 SQL문 실행 과정]
- 완벽히 동일한 구문은 일반적인 SQL문도 캐싱 사용
- 뒤의 검색 구문이 한글자라도 다르면 다른 쿼리라 인식해서 다시 최적화와 컴파일 수행
[저장 프로시저 실행 과정]
- 저장 프로시저의 인자로 받음
- 1회 호출에서만 최적화 및 컴파일 수행
- 다음 수행 시에는 메모리(캐시)를 불러와 수행
4. 저장 프로시저의 장점
- SQL 서버의 성능을 향상 시킬 수 있음
- 한번 실행된 저장 프로시저는 재호출시 캐싱에서 불러와 사용됨
- 유지 보수 및 재활용의 측면에서 좋음
- 요청하는 쪽에서 직접 SQL문을 호출하는 것이 아니라 저장 프로시저의 이름과 인자만 호출하고, 직접 DB에서 SP 파일만 수정하기 때문에 서버를 재가동할 필요가 없음
- 보안을 강화할 수 있음
5. 결론
- 일반 SQL문을 서버에서 작성해서 사용하는 것보다 DB 내에 저장 프로시저를 생성해서 서버(혹은 클라이언트)에서 호출해서 사용하면 여러 이점이 있다.
- 한 번 실행된 프로시저는 DB 내 캐싱이 가능하여 서버 성능 향상에 도움이 된다.
- 서버 코드의 수정 없이 쿼리 로직이 변경 가능하므로, SQL문의 쿼리 로직과 서버 로직의 이원화가 가능하다.
- 대기업에서 많이 쓰는 기술이므로 SP의 개념을 익히면 면접에서 유리하다.
'CS' 카테고리의 다른 글
[CS] 공통 코드 (0) 2023.05.08 [CS] 쓰레드에 대한 이해와 활용 (0) 2023.05.01 [CS] 코딩의 DRY 법칙 (0) 2023.04.24 [CS] Http통신과 Socket통신의 차이점 (0) 2023.04.19 [CS] 메모리란? (0) 2023.04.17