1 시작하기 전
1.1 Stored Procedure란
쿼리와 다르게 DB에 미리 저장되어 INSERT
, UPDATE
, DELETE
등이 수행될 때 특정 기능을 수행할 수 있도록 도와주는 일종의 코드
1.2 Stored Procedure의 장점
- 모듈식 프로그래밍 가능
- 쿼리문으로 조작하던 테이블 데이터들을 Stored Procedure를 사용함으로써 쿼리문과 분리하여 특정 기능만을 수행하는 저장된 프로시저(Stored Procedure)로 활용할 수 있음
- 관리 용이
- 모듈화로 관리가 용이해짐
- 게시판에서 댓글이 INSERT 되면 댓글에 대한 게시글의 댓글 갯수 필드를 UPDATE하는 쿼리문을 전송하는 상황을 가정할 때 UPDATE 쿼리문을 사용하지 않고 Stored Procedure를 사용하여 이벤트로써 동작하게 하는 등 쿼리문에서 필요한 문법만을 사용할 수 있음. 중복 쿼리를 사용하거나 한 클라이언트 당 2~3번의 쿼리 요청을 1번만 쿼리하여 추가로 데이터 수정 가능
- 위급한 상황 시 서버를 재기동하지 않고 쉽게 수정할 수 있음
- 보안 강화
- 특정 테이블에
UPDATE
쿼리가 발생할 경우 다른 테이블에서 INSERT
, UPDATE
가 반드시 이루어져야 하는 상황을 가정할 때 Stored Procedure를 이용하여 특정 테이블의 INSERT
에 대한 INSERT
, UPDATE
쿼리를 사전에 작성해놓으면 DB 사용자 계정에 SELECT
, UPDATE
권한만 GRANT
하여도 INSERT
, UPDATE
가 발생하도록 할 수 있음. 따라서 계정 별로 부여되는 권한을 최소화 할 수 있는 효과가 생기기 때문에 보안을 강화할 수 있음
- 내부적으로 설계된 Stored Procedure에 맞게 쿼리에서 필요한 문법만을 사용하기 때문에 SQL Injection 공격으로부터 위험이 낮아짐
- 필요한 쿼리문만을 작성하고 요청함에 따라 SQL문이 노출되었을 때 DB 구조에 대한 노출을 최소화 할 수 있음
- 성능 향상
- 쿼리문은 요청할 때마다 컴파일 과정이 필요하지만 Stored Procedure는 최초 1회만 컴파일을 수행하기 때문에 쿼리문 보다 성능적으로 유리함
- 여러 번의 쿼리를 하지 않아도 되기 때문에 DB 서버의 부담이 감소함
- 중복 쿼리를 단일 쿼리로 작성 가능하기 때문에 DB 서버의 부담이 감소함
- 쿼리문이 짧아져 네트워크 성능이 향상됨 (하드웨어의 발전으로 거의 효과 없음)
2 새 Procedure 만들기
좌측 Tables 더블 클릭하여 상세 화면 표출 및 Procedures 탭 선택 후 마우스 우클릭, Create New Procedure
3 프로시저 이름 설정
4 프로시저 코드 작성
5 프로시저 저장