MySQL Stored Procedure의 장단점

2020. 9. 17. 00:17DB

장점

  1. DB의 보안이 향상됩니다. Stored Procedure는 자체적인 보안 설정 기능을 가지고 있으며, Stored program 단위로 실행 권한을 부여할 수 있습니다. 권한 제어가 가능하며, SQL 인젝션과 같은 기본적인 보안 사고를 피할 수 있습니다.

  2. 절차적 기능을 구현할 수 있습니다. SQL 문장에 IF/WHILE과 같은 제어 문장을 사용할 수 있습니다.

  3. 어떠한 어플리케이션을 사용하더라도 Stored Procedure를 이용한다면 값을 추출하는데 용이합니다.

  4. 개발 업무를 구분하여 진행할 수 있습니다. 순수하게 어플리케이션을 개발하는 조직과 DMBS 관련 코드를 개발하는 조직을 구분해 진행할 수 있습니다. DBMS 코드를 개발하는 조직은 트랜잭션 단위로 데이터베이스 관련 처리를 하는 Stored Procedure를 만들어 API처럼 제공하고, 어플리케이션 개발자는 Stored Procedure를 호출해서 하는 형태로 역할을 구분해서 개발을 진행할 수도 있습니다.

단점

  1. DBMS에 연결한 각각의 세션 별로 Stored Procedure의 실행 계획이 바이트코드로 캐시됩니다. 즉, Global한 SP 캐시 저장소가 존재하지 않습니다. 세션 별로 Stored Procedure의 실행 계획이 관리가 되면 각 세션마다 캐시되어 있는 실행 계획에 의해 메모리가 부족해 질 수 있습니다. 그리고 만약 DB에 CALL을 할 때마다 DBMS에 연결을 새로하는 환경에서는 매번 세션이 새로 생성되기 때문에 Stored Procedure의 실행이 완료되고 나면 캐시가 바로 삭제되어 버리기 때문에 성능에 영향을 미칩니다.

  2. 운영 중에 Store Procedure가 한 개만 수정되어도 모든 세션의 Stored Procedure 캐시가 삭제됩니다. 만약 Connection Pooling과 같이 연결을 맺은 후 닫지 않고 계속 사용하는 환경이라면 장애가 발생할 수도 있습니다.

  3. Stored Procedure가 어플리케이션의 어느 곳에서 사용되는지 확인이 어렵습니다. Stored Procedure를 수정했는데 다른 기능이 동작하지 않는 경우가 발생할 수도 있습니다.

728x90

'DB' 카테고리의 다른 글

MySQL Storage Engine  (0) 2020.11.25
DB Cluster  (0) 2020.11.20
SQL IN과 OR의 비교  (0) 2020.09.11
MVCC  (0) 2020.06.26
DB Index  (0) 2020.06.19