728x90
반응형
MySQL을 사용하다 보면 커스텀 기능이 필요할 때가 있습니다. 이럴 때 종종 Loadable Function(로드 가능한 함수)을 만들어 사용하게 되는데요. 하지만 이 함수를 더 이상 사용하지 않게 되거나 수정이 필요할 때는 삭제해야 합니다. 이때 사용하는 명령어가 바로 DROP FUNCTION입니다. 이번 글에서는 Loadable Function을 삭제할 때 사용하는 DROP FUNCTION 문에 대해 자세히 알아보겠습니다.
Loadable Function이란?
먼저 간단히 Loadable Function이 무엇인지 짚고 넘어가겠습니다. Loadable Function은 사용자가 C 언어로 작성한 공유 라이브러리 파일(.so 또는 .dll 등)을 MySQL 서버에 로드하여 사용할 수 있는 사용자 정의 함수(UDF)입니다. 일반적인 SQL 함수로 구현하기 어려운 복잡한 계산이나 외부 라이브러리 기능을 MySQL 내에서 활용할 수 있게 해줍니다.
CREATE FUNCTION my_custom_function RETURNS INTEGER SONAME 'my_custom_library.so';
이렇게 생성하면 my_custom_function()을 일반 함수처럼 사용할 수 있습니다.
DROP FUNCTION 문법
Loadable Function을 삭제할 때는 다음과 같이 DROP FUNCTION 문을 사용합니다:
DROP FUNCTION [IF EXISTS] function_name;
- IF EXISTS 옵션을 사용하면 삭제하려는 함수가 존재하지 않을 경우에도 오류를 발생시키지 않습니다.
- function_name에는 삭제할 Loadable Function의 이름을 입력합니다.
예시:
DROP FUNCTION IF EXISTS my_custom_function;
이 명령어를 실행하면 해당 Loadable Function이 MySQL 서버에서 제거됩니다.
MySQL 버전별 주의사항
MySQL에서는 Loadable Function과 일반 스토어드 함수가 다르게 관리됩니다. 특히 다음 사항에 주의하세요:
- MySQL 8.0 버전부터는 UDF 설치가 보안상 더 엄격하게 제한됩니다. mysql.func 테이블을 직접 수정하는 방식은 deprecated 되었고, 대부분의 경우 INSTALL COMPONENT 명령어를 사용하여 서버 컴포넌트 형태로 관리하는 것이 권장됩니다.
- DROP FUNCTION 명령어는 Loadable Function과 스토어드 함수를 구분하지 않고 동일하게 사용됩니다. 단, 삭제 대상이 Loadable Function인지 확인하는 것이 좋습니다.
- MySQL 5.x 버전에서는 CREATE FUNCTION ... SONAME 방식이 일반적이었지만, 8.0 이후 버전에서는 보안 및 권한 정책 변화로 인해 운영 환경에서는 Loadable Function 사용이 줄어드는 추세입니다.
실무에서의 고려사항
- 서버 재시작 여부 확인: Loadable Function을 DROP FUNCTION으로 삭제해도, 해당 공유 라이브러리 파일 자체는 서버 디렉토리에서 제거되지 않습니다. 필요하다면 파일 시스템에서도 삭제하세요.
- 권한 확인: UDF를 삭제하려면 일반적으로 DROP 권한이 필요합니다. 관리 권한이 없다면 DBA에게 요청해야 할 수도 있습니다.
- 호환성 확인: 다른 애플리케이션이나 스크립트에서 이 함수를 호출하고 있지 않은지 확인한 후 삭제하는 것이 안전합니다.
마무리 및 실용 팁
- DROP FUNCTION은 Loadable Function과 스토어드 함수 모두 삭제할 때 사용된다.
- MySQL 8.0 이후 버전에서는 Loadable Function 사용이 보안상 권장되지 않는 경우가 많으므로 대안을 고려해볼 것.
- 삭제 전 항상 의존성을 점검하고, 파일 시스템의 라이브러리 파일까지 정리하는 것을 잊지 말자.
공식 문서 링크
728x90
반응형
'SQL > MYSQL' 카테고리의 다른 글
[MySQL] UNINSTALL PLUGIN 사용법: 플러그인 안전하게 제거하기 (0) | 2025.06.25 |
---|---|
[MySQL] UNINSTALL COMPONENT 사용법: 컴포넌트 제거와 관리 완벽 이해 (0) | 2025.06.25 |
[MySQL] INSTALL PLUGIN 사용법: 플러그인 설치와 관리 완벽 이해 (0) | 2025.06.25 |
[MySQL] INSTALL COMPONENT 문법: 플러그인과 컴포넌트 설치 완벽 이해 (0) | 2025.06.25 |
[MySQL] CREATE FUNCTION: Loadable Function 작성법 완벽 가이드 (0) | 2025.06.18 |
[MySQL] REPAIR TABLE 문 사용법: 손상된 테이블 복구하기 (0) | 2025.06.17 |
[MySQL] OPTIMIZE TABLE 문: 성능 개선을 위한 최적화 전략 (0) | 2025.06.17 |
[MySQL] CHECKSUM TABLE 문 완벽 가이드: 무결성 검증을 위한 실전 팁 (0) | 2025.06.17 |