1. 정의 : 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
→ 특정 로직의 쿼리를 함수로 만들어 놓은 것
ex. 페이징 쿼리와 같이 자주 사용되는 쿼리가 있다면, 함수로 한 번 만들어 놓고 사용하게 되면 성능 상으로나 코드 재사용성 등에 이점이 있을 것
2. 일반 쿼리문 vs. 저장 프로시저
- 일반 쿼리문 작동 방식
- 저장 프로시저
- 정의 단계
- 처음으로 저장 프로시저를 실행
- 이후의 저장 프로시저 실행
- 장점
- SQL Server의 성능을 향상 시킬 수 있음
- → 저장 프로시저를 처음에 실행하면 최적화, 컴파일 단계를 거쳐 그 결과가 캐시에 저장되게 되는데, 이후에 해당 SP를 실행하게 되면 캐시에 있는 것을 가져와 사용하므로 실행 속도가 빨라지게 됨
- 유지보수 및 재활용 측면에서 좋음
- → 응용프로그램에서 직접 SQL문을 호출하지 않고, 저장 프로시저의 이름을 호출하도록 설정하여 사용하는 경우가 많은데, 이 때 개발자는 수정요건이 발생할 때 SP 파일만 수정하면 되기 때문에 유지보수 측면에서 유리해짐
- 보안을 강화할 수 있음
- → 사용자별로 테이블에 권한을 주는게 아닌 저장 프로시저에만 접근 권한을 주는 방식으로 보안을 강화할 수 있음
- 네트워크의 부하를 줄일 수 있음
- → 클라이언트에서 서버로 쿼리의 모든 텍스트가 전송될 경우 네트워크에 큰 부하가 발생하게 됨 but, SP를 이용하면 SP의 이름, 매개변수 등 몇글자만 전송하면 되기 때문에 부하를 크게 줄일 수 있음
- 단점
- DB 확장 어려움 : 서버의 수를 늘려야할 때, DB의 수를 늘리는 것이 더 어려우며, DB교체는 거의 불가능함
- 데이터 분석의 어려움 : 개발된 프로시저가 여러 곳에서 사용될 경우 수정했을 때 영향의 분석이 어려움
- 낮은 처리 성능 : 문자, 숫자열 연산에 SP를 사용하면 오히려 c, java보다 느린 성능을 보일 수 있음
'CS > Database' 카테고리의 다른 글
[CS] Redis (1) | 2023.11.01 |
---|---|
[CS] 트랜잭션의 격리 수준 (Transaction Isolation Level) (1) | 2023.11.01 |
[CS] 트랜잭션 (Transaction) (0) | 2023.11.01 |
[CS] 정규화 (1) | 2023.11.01 |
[CS] 이상, 인덱스 (1) | 2023.10.23 |