오늘은 공부 중/DB

[mysql] stored procedure의 특징

이도토리 2021. 9. 1. 08:14



https://kchanguk.tistory.com/m/123

MySQL Stored Procedure의 장단점

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

kchanguk.tistory.com

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

https://purumae.tistory.com/m/187

MySQL의 Stored Procedure 특성

MS-SQL을 오래 다뤄 본 사람이라면 Stored Procedure는 옵션이 아닌 필수라는 점에 동의할 겁니다. 하지만 MySQL에서 Stored Procedure를 사용하는 것은, MS-SQL에서 만큼 보편적이지 않습니다. 여러가지 이유

purumae.tistory.com

DBMS에 연결한 각각의 세션 별로 SP의 실행 계획이 바이트코드로 캐시된다. 즉, Global한 SP 캐시 저장소가 존재하지 않는다.

운영 중 SP가 단 한개만 수정되어도, 모든 세션의 모든 SP의 캐시가 삭제된다.

PHP와 같은 환경에서 캐시 자체가 무의미
PHP와 같은 환경이란.. SP를 CALL할 때마다 DBMS에 연결을 새로하는.. 즉, connection pooling이나 persistent connection을 제대로 지원해주지 않는 환경을 말합니다.

이런 환경에서는 매번 세션이 새로 생성되기 때문에 SP를 실행하면서 컴파일과 캐시라는 과정을 거치지만, SP 실행이 완료되고 나면 캐시가 바로 삭제되어 버립니다.
즉, 컴파일의 잇점을 살리지 못할 뿐더러 오히려 손해가 되겠죠.

다음으로 SP가 수정되었을 때, 모든 세션의 모든 SP에 대한 캐시가 소멸됩니다.

JDBC를 사용한 connection pooling이라던가 C++로 짠 서버에서 MySQL로 연결을 맺고 계속 닫지 않고 사용하는 환경이라면.. 운영할 때 더 많은 주의가 필요하겠습니다.