실제로 MySQL에서는 이전에 생성한 준비된 문(prepared statement)을 명시적으로 할당 해제하지 않고도 같은 이름으로 새 문을 다시 준비할 수 있습니다. 그 이유는 MySQL이 준비된 문이 재정의되거나 서버와의 연결이 종료될 때 해당 문을 자동으로 삭제하기 때문입니다.
자동 삭제 vs. 명시적 할당 해제
즉, 같은 이름의 준비된 문을 명시적으로 해제하지 않고도 계속 사용할 수 있다는 뜻입니다. 하지만 서버 측 메모리를 확보하려면 반드시 할당을 해제해 주어야 합니다. 이 작업은 DEALLOCATE 문을 사용하여 다음과 같이 수행할 수 있습니다.
DEALLOCATE PREPARE statement;
여기서 statement는 할당을 해제할 준비된 문의 이름입니다.
DROP PREPARE — 동의어 구문
DROP PREPARE 문은 준비된 문을 할당 해제하는 DEALLOCATE PREPARE의 동의어(synonym)입니다. 두 구문은 완전히 동일하게 동작합니다.
예제
mysql> DROP PREPARE stmt11; Query OK, 0 rows affected (0.00 sec)
위 예제처럼 DROP PREPARE를 실행하면 이름이 stmt11인 준비된 문이 삭제되고, 해당 문이 서버에서 차지하고 있던 메모리가 해제됩니다.