DB/MySQL

[MySQL] 스토어드 프로시저

오늘도개발 2024. 6. 26. 11:40

 

1. 스토어드 프로시저란?

 

  - 스토어드 프로시저(Stored Procedure)는 데이터베이스 관리 시스템(DBMS) 내에서 실행되는 하나 이상의 SQL 문장을 포함하는 프로그램

 

  - 토어드 프로시저는 데이터베이스 작업을 더 효율적이고 안전하게 처리할 수 있는 강력한 도구

 

  - 연산, 반복문, 조건문 등 다양하게 사용 가능

 

 

2. 스토어드 프로시저 장점

 

 

  - 성능 향상

    > 네트워크 트래픽 감소: 클라이언트와 서버 간의 통신이 줄어듭니다.

    > 한 번의 호출로 여러 작업을 서버에서 수행

 

  - 캐싱

    > DBMS가 프로시저를 컴파일하고 캐시할 수 있어 반복 호출 시 성능이 향상

 

  - 재사용성 및 유지보수성

    > 재사용 가능 코드

    > 데이터베이스 내에서 비즈니스 로직을 중앙에서 관리 ( 코드 변경 시 여러 애플리케이션을 수정할 필요 X )

 

  - 추상화

    > 복잡한 SQL 연산이나 로직을 프로시저로 감싸서 단순한 호출로 복잡한 작업을 수행 가능

    > 비즈니스 로직을 데이터베이스 레이어로 옮김으로써 애플리케이션 코드가 더 간결 ( 캡슐화 )

 

- 보안

    > 데이터베이스 테이블에 직접 접근하지 않고 프로시저를 통해 접근

    > SQL 문을 코드에서 직접 작성하는 대신 프로시저를 사용하면 SQL 인젝션 공격을 방지

 

 

3. 스토어드 프로시저 단점

 

  - 디버깅 어려움

    > SQL 쿼리의 디버깅 도구는 많지만, 프로시저의 디버깅은 상대적으로 어렵고 제한적

 

  - 이식성 문제

    > 스토어드 프로시저는 특정 DBMS에 종속적

   

  - 복잡성 증가

    > 많은 프로시저가 생성되면 관리가 어려움

    > 애플리케이션과 DBMS 간의 책임 분리가 어려워질 수 있음.(  비지니스 로직이 데이터베이스에 묶임)

 

  - 성능 저하 가능성

    > 너무 많은 로직을 데이터베이스로 옮기면 데이터베이스 서버에 부담

    >  데이터베이스에서 행 단위로 처리하는 스칼라 함수는 대량의 데이터를 처리할 때 성능이 저하될 수 있음

 

 

 

 

'DB > MySQL' 카테고리의 다른 글

[MySQL] B+tree  (0) 2024.06.27
[MySQL] 인덱스  (0) 2024.06.27
[MySQL] 함수  (0) 2024.06.26
[MySQL] 서브쿼리  (0) 2024.06.25
[MySQL] 테이블 조인  (0) 2024.06.21