저장 프로시저란?

0taetae·2024년 12월 23일
post-thumbnail

저장 프로시저란?

일련의 SQL 문장을 데이터베이스에 저장하고 함수처럼 호출하여 사용할 수 있다.

💡왜 저장 프로시저를 사용하는가?

  1. 제한적 접근

    • 저장 프로시저는 사용자들에게 데이터에 대한 제한적인 접근을 허용한다.
    • 사용자들은 SELECT, INSERT, UPDATE, DELETE와 같은 문장을 직접 실행할 수 있는 권한을 제한할 수 있다.
  2. 성능 향상

    • 저장 프로시저가 최초로 실행되면, SQL 서버는 해당 프로시저에 대한 실행 계획을 생성하고 캐쉬에 저장 한다.
    • 해당 저장 프로시저가 재실행 요청을 받으면, SQL 서버는 저장된 실행 계획을 재사용한다.
    • 실행 계획이 만료되거나 SQL 서버가 새로운 실행계획을 생성시켜야 할 여유가 생길 때까지 해당 실행계획은 캐쉬에 유지된다.
  3. 네트워크 트래픽 감소

    • 복잡한 sql문을 저장 프로시저로 구현하면, 네트워크 데이터 소통량이 감소된다.
      -> 자주 실행되는 프로시저일수록 성능 향상 효과가 더 크다.
  4. 유지보수 용이성

    • 복잡한 시스템에서 테이블이나 칼럼의 참조를 쉽게 추적할 수 있다.
    • 저장 프로시저 코드만 검토하여 개체 참조를 파악할 수 있다.

Mysql 프로시저 작성하기

CREATE TABLE user (
    id VARCHAR(100),
    name VARCHAR(100), 
    campus VARCHAR(100),
    class VARCHAR(100),
    gi VARCHAR(100)
);

DELIMITER //

CREATE PROCEDURE proc_user_insert(
    IN p_id VARCHAR(100),
    IN p_name VARCHAR(100),
    IN p_campus VARCHAR(100), 
    IN p_class VARCHAR(100),
    IN p_gi VARCHAR(100)
)
BEGIN
    INSERT INTO user(id, name, campus, class, gi)
    VALUES (p_id, p_name, p_campus, p_class, p_gi);
END //

DELIMITER ;

CALL proc_user_insert('myId', '홍길동', '서울', '1반', '12기');

select * from user;

여기서, DELIITER란

  • SQL문의 끝을 나타내는 구분자를 변경하는 명령어 이다.
  • 저장 프로시저와 같이 여러 SQL문을 포함하는 구문을 작성할 때는 구분자를 변경해야 한다.
  • 이렇게 DELIMITER를 사용하면, 복합 SQL문을 작성할 수 있고, 구문 충돌을 방지할 수 있다.

0개의 댓글