2009년 1월 25일 일요일

Prepared Statement의 패킷

Prepared Statement의 패킷(Prepare할 때)
Prepared Statement의 송수신시 패킷은 보통 SQL문 실행할 때와 상당히 다르다.
보통 SQL에서는 한번 왕복으로 완료되지만 Prepared Statment의 경우에는 Prepare할 때, Execute할 때에 각각의 패킷이 주고 받아진다 .

패킷 flow
클라이언트 -> 서버 ①Prepare Command Packet(mysql_stmt_prepare())
서버->클라이언트 ②Prepare Packet(_Header Packet, _Placeholder Packets, _EOF Packet, _Field Packets, _EOF Packet)
클라이언트->서버 ③Execute Command Packet(mysql_stmt_execute())
서버->클라이언트 ④Execute Packet(_ResultSet Header Packet, _Field Packets, _EOF Packet, PreparedStatement Row Data Packets, _EOF Packet)

Prepare할 때(MySQL C API에서는 mysql_stmt_prepare()에 해당한다. )에 어떤 패킷들이 주고 받아지는지 알아보자.