[CS] 저장 프로시저(Stored Procedure)

1. 정의 : 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
→ 특정 로직의 쿼리를 함수로 만들어 놓은 것

ex. 페이징 쿼리와 같이 자주 사용되는 쿼리가 있다면, 함수로 한 번 만들어 놓고 사용하게 되면 성능 상으로나 코드 재사용성 등에 이점이 있을 것

2. 일반 쿼리문 vs. 저장 프로시저

  1. 일반 쿼리문 작동 방식

  1. 저장 프로시저
    1. 정의 단계
    2. 처음으로 저장 프로시저를 실행
    3. 이후의 저장 프로시저 실행

  1. 장점
    1. SQL Server의 성능을 향상 시킬 수 있음
    2. → 저장 프로시저를 처음에 실행하면 최적화, 컴파일 단계를 거쳐 그 결과가 캐시에 저장되게 되는데, 이후에 해당 SP를 실행하게 되면 캐시에 있는 것을 가져와 사용하므로 실행 속도가 빨라지게 됨
    3. 유지보수 및 재활용 측면에서 좋음
    4. → 응용프로그램에서 직접 SQL문을 호출하지 않고, 저장 프로시저의 이름을 호출하도록 설정하여 사용하는 경우가 많은데, 이 때 개발자는 수정요건이 발생할 때 SP 파일만 수정하면 되기 때문에 유지보수 측면에서 유리해짐
    5. 보안을 강화할 수 있음
    6. → 사용자별로 테이블에 권한을 주는게 아닌 저장 프로시저에만 접근 권한을 주는 방식으로 보안을 강화할 수 있음
    7. 네트워크의 부하를 줄일 수 있음
    8. → 클라이언트에서 서버로 쿼리의 모든 텍스트가 전송될 경우 네트워크에 큰 부하가 발생하게 됨 but, SP를 이용하면 SP의 이름, 매개변수 등 몇글자만 전송하면 되기 때문에 부하를 크게 줄일 수 있음
  2. 단점
    1. DB 확장 어려움 : 서버의 수를 늘려야할 때, DB의 수를 늘리는 것이 더 어려우며, DB교체는 거의 불가능함
    2. 데이터 분석의 어려움 : 개발된 프로시저가 여러 곳에서 사용될 경우 수정했을 때 영향의 분석이 어려움
    3. 낮은 처리 성능 : 문자, 숫자열 연산에 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