요약 : 이번 튜토리에서는 MySQL Stored Procedure에 관해서 배우고, 그것들의 장점과 단점을 알아 볼 것이다.
Stored Procedure 의 정의
Stored Procedure는 데이터베이스 카탈로그 1 내부에 저장되어있는 선언적 SQL문의 세그먼트 이다. Stored Procedure는 trigger, 다른 Stored Procedure, 그리고 Java, Python, PHP 등의 응용프로그램에서 호출 될 수 있다. 2
자기 자신을 호출 하는 Stored Procedure는 재귀적 저장 프로시저(recursive stored procedure)로 알려져 있다. 대부분의 데이터베이스 관리 시스템은 재귀적 저장 프로시저를 지원한다. 하지만 MySQL은 이것을 지원하지 않는다. MySQL에서 재귀적 저장 프로시저를 구현하기 전에 MySQL 데이터베이스의 버전을 체크 해야한다.
MySQL 은 community 와 enterprise에서 넓게 사용되고 있는 가장 인기 있는 오픈소스 RDBMS로 알려져 있다. 하지만, 처음 수십년 동안은 stored procedure, stored function, triggers, events 들을 지원하지 않았다. MySQL 버전 5.0 이후에 더 유연하고 강력한 MySQL 데이터 베이스 엔진에 이러한 기능들을 추가했다.
MySQL stored procedure의 장점
- 전형적으로 stored procedures는 응용프로그램의 성능을 향상시키는데 도움을 준다. 한번 생성하면 저장 프로시저는 데이터베이스에 컴파일 되고 저장되어진다. 하시잔 MySQL은 약간 다르게 저장 프로시저를 구현했다. MySQL 저장 프로시저는 요구가 있을대 컴파일 되어진다. 저장 프로시저를 컴파일 후에는 MySQL은 캐시에다가 놓는다. 그리고 MySQL은 모든 단일 연결에 독자적인 저장 프로시저 캐시를 유지한다. 만약 단일 연결에서 저장 프로시저를 여러번 사용하는 어플리케이션있다면 컴파일된 버전을 사용할 것이다. 그렇지 않으면 저장 프로시저는 쿼리처럼 일을 할 것이다.
- 저장 프로시저는 응용프로그램과 데이터베이스 서버 사이에 오가는 트래픽의 양을 줄여주는데 도와준다. 왜냐하면 많은 SQL문을 보내는 대신에, 응용프로그램은 이름이랑 저장 프로시저의 매개변수만 보내면 되기 때문이다.
- 저장 프로시저는 재사용 가능하며, 어떤 응용프로그램 에서도 투명하다(transparent).
- 저장 프로시저는 개발자들이 함수(이미 저장 프로시저에서 지원함)를 개발하지 않아도, 모든 응용프로그램에서 데이터베이스 인터페이스를 노출한다.
- 저장 프로시저는 안전하다. 데이터베이스 관리자는 기본 데이터베이스 테이블에 접근할 수 있는 권한을 부여하지 않고, 응용프로그램이 저장 프로시저에 접근할 수 있는 적절한 권한을 부여하면 된다.
이러한 장점들의 외에도 저장 프로시저는 단점도 보유하고 있다. 독자들은 본인의 데이터베이스에 저장 프로시저 기능을 사용하기 전에 이러한 단점들을 알고 있어야 한다.
MySQL stored procedure의 단점
- 만약 많은 저장 프로시저를 사용한다면, 그 저장 프로시저를 사용하는 모든 연결의 메모리 사용량이 증가할 것이다. 게다가 만약 저장 프로시저 내부의 큰 수의 논리적 연산을 많이 사용한다면, CPU 사용량 또한 증가할 것이다. 왜냐하면 데이터베이스 서버는 논리적 연산을 하기 위해 잘 만들어진 것이 아니기 때문이다.
- 저장 프로시저의 생성자는 복잡한 비즈니스 로직을 가지는 저장 프로시저를 개발하는데 더 어렵게 만들 것이다.
- 저장 프로시저를 디버그 하는데 어렵다. 오직 몇개의 데이터베이스 관리 시스템들만 저장 프로시저를 디버그 하는데 허용한다. 불행히도, MySQL은 저장 프로시저를 디버깅 하기 위한 기능을 제공하지 않는다.
- 저장 프로시저를 개발하고 유지하는데 쉽지 않다. 저장 프로시저를 개발하고 유지하는 것은 종종 모든 응용프로그램 개발자들이 알고있지 않는 전문적인 기술을 요구한다. 응용프로그램 개발과 유지 보수 단계에서 문제가 발생할 수 있다.
MySQL 저장 프로시저는 장점과 단점을 가지고 있다. 이 글을 읽는 사람이 응용프로그램을 개발할 때, 비즈니스 요구에 기초를 둔 저장 프로시저를 사용할지 안할지 결정 할 수 있다.
다음 튜토리얼에서 우리는 많은 현실적인 예시와 함께 데이터베이스 프로그래밍 작업에 MySQL 저장 프로시저가 어떻게 도와주는지(leverage) 보여줄 것이다.
출처 : http://www.mysqltutorial.org/introduction-to-sql-stored-procedures.aspx
다음글 : [Stored Procedure] 2. MySQL Stored Procedure 시작하기
[ 각주 ]
'프로그래밍 > MySQL' 카테고리의 다른 글
[Stored Procedure] 5. MySQL Stored Procedure 다중 값 반환 (0) | 2016.07.27 |
---|---|
[Stored Procedure] 4. MySQL Stored Procedure 매개변수 (0) | 2016.07.26 |
[Stored Procedure] 3. MySQL Stored Procedure 변수 (1) | 2016.07.25 |
[Stored Procedure] 2. MySQL Stored Procedure 시작하기 (0) | 2016.07.22 |
[Stored Procedure] 0. MySQL Stored Procedure 소개 (0) | 2016.07.21 |