반응형
Stored Procedure는 데이터베이스에 컴파일되어 Database 서버에 저장되면서 장점도 있지만 단점 있어서 설명 예정입니다.
Stored Procedure 장점, 단점 설명
Stored Procedure 장점.
- Database 성능 면에서 Procedure는 기본적으로 첫 실행 시 컴파일되기 때문에 실행 계획을 재사용할 수 있어 성능 향상이 있습니다.
- Stored Procedure는 한 번의 요청으로 여러 SQL 문을 실행할 수 있으므로 편하게 사용할 수 있습니다.
- Database 중앙에서 SQL 로직을 관리하므로 유지보수가 쉽습니다.
- 보안 측면에서 직접적인 SQL 문을 호출하지 않고 저장 프로시저 호출을 하므로 보안성이 좋습니다.
Stored Procedure 단점.
- 오류 발생 시 디버깅이 일반 SQL에 비해 매우 어렵습니다.
- Stored Procedure 각각의 Database 회사의 플랫폼에 종속되어 타 데이터베이스 시스템 변경 시 변경되는 데이터베이스에 맞춰서 개발해야 합니다.
- 한 번에 여러 SQL 작성하는 경우 장점도 있지만 로직이 복잡해져서 유지보수를 힘들게 합니다.
- Stored Procedure는 Database에 종속되므로 바로 적용되어 위험할 때도 있습니다.
- Dynamic SQL을 빈번하게 사용하는 경우 유지 보수관리가 힘들어집니다.
- Stored Procedure 많은 연산 로직이 포함되면은 CPU 사용량이 많아져서 성능상 문제가 될 수 있습니다.
Stored Procedure 실행 과정
Stored Procedure 실행 흐름도.
Stored Procedure 생성 시.
- SQL 구문 확인: Stored Procedure에 작성한 SQL을 확인합니다.
- 그러나 Dynamic SQL에서 문자열 안에 있으면 확인 불가능합니다.
- 생성 권한 획인: Database에 Stored Procedure생성 권한 있는지 확인합니다.
- 관련 Object 확인: 정적 SQL일 때는 관련 테이블이 있는지 확인합니다.
- 시스템 등록: Procedure 시스템 테이블에 등록합니다.
Stored Procedure 첫 실행.
- SQL 구문 확인: Stored Procedure에 작성한 SQL 기준으로 실행 SQL을 확인합니다.
- 객체 이름 체크: 시스템에 해당 Stored Procedure가 있는지 확인합니다.
- 권한 확인: Stored Procedure 실행 권한 체크 합니다.
- 컴파일 및 실행 계획 등록: T-SQL을 컴파일하고 실행 계획을 작성합니다.
- 메모리(캐시) 저장: 실행 계획 저장합니다.
- 실행: 작성된 T-SQL 문을 실행합니다.
Stored Procedure 첫 번째 이후 실행.
- 같은 T-SQL: 같은 T-SQL 있는 경우.
- 메모리(캐시) Check: 첫 실행에서 등록된 실행 계획 있는지 메모리를 확인합니다.
- 실행: T-SQL 문을 실행합니다.
Stored Procedure 장단점 마무리하며
- 저장 프로시저는 비즈니스 로직이 단순할 때는 장점이 많지만 복잡해지면 관리상 많은 문제점을 가지고 있습니다.
- 그러나 업무 특성상 꼭 사용해야 할 때도 있어서 필요에 따라 사용하기를 추천합니다.
- 매개변수를 Dynamic SQL같이 사용할 때는 순서를 고려하여 작성해야 합니다.
- Stored Procedure 안에서 IF 문, CASE 문, While 문을 사용할 때는 유지보수 또는 성능을 고려하여 작성해야 합니다.
- Dynamic SQL을 사용할 때는 SP_executesql 추천합니다.
반응형