MySQL에서는 SHOW PROCEDURE STATUS 문에 WHERE 조건을 결합하면, 특정 데이터베이스에 포함된 저장 프로시저(Stored Procedure)의 목록을 정의자, 생성일, 수정일 같은 다양한 부가 정보와 함께 한 번에 확인할 수 있습니다.
기본 쿼리 문법
SHOW PROCEDURE STATUS WHERE db = '데이터베이스명';
아래 예시는 'query'라는 데이터베이스에 등록된 저장 프로시저를 조회한 결과입니다. 명령문 끝에 \G를 붙이면 결과가 세로 형태로 출력되어 각 항목을 읽기가 훨씬 편리합니다.
mysql> SHOW PROCEDURE STATUS WHERE db = 'query'\G
*************************** 1. row ***************************
Db: query
Name: allrecords
Type: PROCEDURE
Definer: root@localhost
Modified: 2017-11-11 09:56:11
Created: 2017-11-11 09:56:11
Security_type: DEFINER
Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
Database Collation: latin1_swedish_ci
1 row in set (0.01 sec)주요 출력 항목 설명
- Db : 해당 프로시저가 속한 데이터베이스의 이름입니다.
- Name : 저장 프로시저의 이름입니다.
- Type : 루틴의 유형을 나타내며, 여기서는 PROCEDURE(저장 프로시저)입니다.
- Definer : 프로시저를 생성한 계정 정보입니다(예: root@localhost).
- Modified / Created : 각각 마지막 수정 일시와 최초 생성 일시를 의미합니다.
- Security_type : 실행 시 적용되는 보안 방식으로 DEFINER 또는 INVOKER 값이 지정됩니다.
- Comment : 프로시저 생성 시 함께 등록한 주석 내용입니다.
- character_set_client / collation_connection : 클라이언트 문자셋과 연결 콜레이션 정보입니다.
- Database Collation : 해당 데이터베이스의 기본 콜레이션입니다.
활용 팁
데이터베이스에 프로시저가 많다면 LIKE 연산자를 활용해 이름 기준으로 검색 범위를 좁힐 수 있습니다.
SHOW PROCEDURE STATUS WHERE db = 'query' AND Name LIKE 'all%';
이처럼 SHOW PROCEDURE STATUS는 단순히 프로시저 이름만 나열하는 것이 아니라, 관리와 유지보수에 필요한 메타 정보까지 함께 제공하므로 데이터베이스 운영 시 매우 유용하게 활용할 수 있습니다.