2009년 2월 4일 수요일

Close경우의 패킷

Close경우의 패킷
PreparedStatement의 close경우(C API에서는 mysql_stmt_close()에 해당)에는 다음과 같은 
Command Packet이 클라이언트에서 서버로 송신된다. 

PreparedStatement Close Command Packet
패킷헤더: 4바이트
명령어번호: 1바이트 , 0x19(COM_STMT_CLOSE)고정
 Statement ID: 4바이트

또  접속이 끊겼을 때에는 다음과 같은 Command Packet이 클라이언트에서 서버로 송신된다. 

Quit Command Packet
패킷헤더: 4바이트
명령어번호: 1바이트 , 0x01(COM_QUIT)고정

그 어느쪽도 서버에서 클라이언트로는 TCP응답이 되돌려질 뿐 MySQL전용의 패킷형식은 없다. 

-----------
MySQL 통신프로토콜에 관한 기술 자료로서 MySQL Internal Manual(영어)이 있다. 
다만 옛날 버전정보가 그대로 남아있거나 해서 일부 부정확한 부분도 있다. 

이 수준의 정보를 깊은 수준으로 이해하려고 한다면 소스코드를 분석할 필요가 있을 때가 온다. 
MySQL은 오픈소스이기 때문에 소스코드를 잘 보면  이런 내용들을 전부 이해할 수 있다.