본문 바로가기

DB

[MSSQL] 프로시저

프로시저란?

SQL SERVER에서 제공하는 프로그래밍기능으로 쿼리문들의 집합이라 할 수있다.

쿼리문을 하나의 함수 형식으로 만들어 어떠한 동작을 일괄적으로 처리하는 용도로 사용된다.

 

사용되는 이유

1. SQL SERVER의 성능을 향상시켜준다.

프로시저를 처음에 실행하면 컴파일 단계를 거쳐서 결과값을 캐시에 저장하게 된다. 

이 후에 동일한 SP(Stored procedure)를 실해하면 캐시에 저장된 값을 가져와 사용하여 실행속도가 빨라진다.

 

2. 유지보수 및 재활용 

Java, C#등으로 만들어진 응용프로그램에서 직접 SQL문을 호출하지 않고

SP의 이름을 호출하도록 설정해 사용하는 경우가 많은데,

이 때 개발자는 수정요건이 발생할 때 코드 내 SQL문을 건드리는 게 아니라

SP파일만 수정하여 유지보수측면에서도 유리하다.

한번 저장 프로시저를 생성해 놓으면, 언제든 실행이 가능하기 때문에 재활용 측면에서 매우 좋다.

 

또한 프로시저만 수정이 필요한 경우 애플리케이션을 배포하지않고 프로시저만 배포하면 된다.

 

3. 보안강화

사용자 별로 테이블에 권한을 주는게 아닌 SP에만 접근권한을 주는 방식으로 보안을 강화할 수 있다.

실제 테이블에 접근하여 다양한 조작을 하는 것은 위험하기때문에 사용자에게 SP 권한만 주는 방식을 사용할 수 있다.

 

4. 네트워크 부하를 줄일 수 있다.

클라이언트에서 서버로 쿼리 텍스트를 전송할 때 네트워크에서는 부하가 생기는데

SP를 이용한다면 SP이름, 매개변수 등 몇 글자만 전송하면 되기 때문에 부하를 줄일 수 있다.

 

물론 단점도 존재한다.

1. 처리성능이 낮다.

문자, 숫자연산에 SP를 사용하면 CPU점유율이 높아지고 실행시간이 길어져

LOCK이 걸려있을 경우 병목현상이 일어날수있다.

2. 디버깅이 어렵다.

3. 첫번째 수행 시 최적화가 이루어져서 인덱스 사용여부가 결정된다.

만약 두번째 수행에서 파라미터가 변경된다면 일반 쿼리문에서는 이를 인식하고 다시 최적화를 하겠지만

SP에서는 그냥 첫번째 수행을 실행해버리게 된다. 이럴 경우 SP를 다시 컴파일해줘야 한다.

 

 

 

 

참고

https://devkingdom.tistory.com/323

'DB' 카테고리의 다른 글

SQL 기본 문법 정리 1 - DDL, DML  (0) 2022.02.27
SQL 기본 구문  (0) 2022.02.26