* Computer Science/database

스토어드 프로시저?

soicem 2020. 6. 21. 19:56

 MySQL의 스토어드 프로시저를 보면 프로그래밍 언어 수업 때 봤던 코볼(?) 언어가 생각난다.  정확하게 코볼인지는 모르겠는데 procedure와 function이 공존하며, begin, end 같은 키워드가 있는 언어가 그것이다.  MySQL의 메모리에 코드가 올라가 있고 테이블 마다 형성하는 것으로 보인다.

 파이썬으로 MySQL과 연결하여 쿼리를 던지면 보통(=나는) 완전한 쿼리문을 작성하여 던진다.  이 과정이 방대하면 부하가 걸리니 스토어드 프로시저로 특정 동작의 모듈을 구현해놓으면 클라이언트는 해당 함수 호출만 하면 되니 간편하다.  또한, 다른 DBMS는 스토어드 프로시저가 한 번 컴파일 되어 메모리에 상주하지만 MySQL은 호출할 때마다 컴파일이 된다고 한다.  

 스토어드 함수는 리턴값이 있고, IN/OUT을 사용할 수 없다고 한다.  스토어드 프로시저와 함수를 구분할 때 c++로 따지면 리턴이 void와 void가 아니면서 reference 변수를 사용할 수 있는지 여부로 구분하면 된다.  근데 뭐, 수업 들을 때 부터 생각해왔던거지만 이 둘을 구분하는건 별 의미가 없다.  그냥 쓰면 된다.

 

ref: 이것이 MySQL이다.  스토어드 프로그램 중