PreparedStatement.execute()を使ったクエリ送信のまとめ

Client-SideのPreparedStatementを実行する際,C/Jでは以下のような順に内部処理を行っていきます.

  1. 解析済みSQL文および設定済みパラメータ値を用いてBufferオブジェクトを作成.
  2. Connection.getMutex()によりSynchronizedを実行.
  3. タイムアウト処理を行う設定にしている場合には,タイムアウト監視スレッドを起動.この監視スレッドは一定時間内にクエリが完了しなければ"KILL QUERY id"を実行するものです.
  4. フェイルオーバ処理.設定が有効となっていて、必要な場合、スレーブへ新規接続など.新規接続した場合にはこの後のタイミングでSynchronized.
  5. Bufferに書かれたBody部分の長さ(クエリ本文+1byte)が16MB未満であるかチェック.
  6. 16MB未満である場合には,BufferにPacket Headerを追加してOutputStreamにwrite/flush.
  7. 16MB以上である場合にはBufferを複数回に分けて送る処理.write/flushは必要な回数行われる.

詳しくはこちら
http://ikda.net/fswiki/wiki.cgi?page=Connector%2FJ+5%2E0#p8