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 |