Database - 11. 저장 프로시저 편

Perdy·2023년 9월 18일
0

CS

목록 보기
20/20

저장 프로시저

저장 프로시저란 여러 SQL문을 하나의 SQL문처럼 정리하여 CALL ~ 라는 명령으로 실행할 수 있도록 만든 것을 말합니다.

저장 프로시저 = 저장하다 + 절차를 뜻합니다. 즉, 일련의 절차를 정리해서 저장한 것을 말합니다.

사전에 준비해둔 많은 명령을 자동으로 수행하기 때문에, 작업의 효율성이 높아진다는 장점이 있지만, 제대로 검증되지 않은 저장 프로시저를 사용하면 위험할 수 있다는 단점이 있습니다.

저장 프로시저에서 DELIMITER

저장 프로시저 내부에 사용하는 SQL문은 일반 SQL문이기때문에 세미콜론(;)으로 문장을 끝맺어야 할 필요가 있습니다.

이 때, 저장 프로시저 작성이 완료되지 않았음에도 SQL문이 실행되는 위험을 막기 위해 구분자(;)를 다른 구분자로 바꿔주어야하는데 이 때 사용하는 명령어가 DELIMITER 입니다.

따라서 저장 프로시저 생성 전에 구분자(DELIMITER)를 $$ 으로 바꿔주고 프로시저 작성이 끝났을 때 END $$ 로 저장 프로시저의 끝을 알려줍니다.

마지막으로 구분자를 원래대로 되돌리기 위해 구분자(DELIMITER)를 세미콜론(;)으로 바꿔줍니다.

프로시저 장점

최적화 & 캐시
프로시저의 최초 실행시 최적화 상태로 컴파일이 되며, 그 이후 프로시저 캐시에 저장됩니다.
만약 해당 프로세스가 여러 번 사용될 때, 컴파일 작업을 거치치 않고 캐시에서 가져오게 됩니다.

유지보수
작업이 변경될 때, 다른 작업은 건드리지 않고 프로시저 내부에서 수정만 하면 됩니다.

트래픽 감소
클라이언트가 SQL문을 직접 작성할 필요없이, 프로시저 명에 매개변수만 담아 전달하면 되기 때문에, 클라이언트와 서버 간 네트워크 상의 트래픽이 감소하게 됩니다.

보안
프로시저 내에서 참조 중인 테이블의 접근을 막을 수 있습니다.

프로시저 단점

호환성
구문 규칙이 SQL 표준과의 호환성이 낮기 때문에 코드 자산으로서의 재사용성이 낮습니다.

성능
문자 또는 숫자 연산에서 프로그래밍 언어들보다 느립니다.

디버깅
에러가 발생했을 때, 어디서 문제가 발생했는지 찾아서 디버깅하기 힘들 수 있습니다.

참고 링크

profile
영원한 뉴비. 꾸준히 한다면 언젠가는 높은 곳에 도달할지도?

0개의 댓글