Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 이전 문을 할당 해제하지 않고 같은 이름의 준비된 문(Prepared Statement)을 다시 생성하면 어떻게 될까?

실제로 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인 준비된 문이 삭제되고, 해당 문이 서버에서 차지하고 있던 메모리가 해제됩니다.