0

ローカル MySQL サーバーへの 2 つの永続的な接続を確立するこの Linux バイナリ アプリケーションがあります (ホスト名として 127.0.0.1 を使用)。

このようなアプリケーションは 15 分ごとに 2000 の単一行inserts を実行する必要があります (データベースの設計について質問しないでください) insert。 MySQL; Wireshark で tcp ダンプを見ると、そのようなコンテキストでは、MySQL は単純な ACK パケットで応答し、MySQL プロトコル固有のセクションはありませんが、実際には PSH フラグがないため、適切な MySQL の「応答 OK」メッセージとして認識されません。 .

MySQL サーバーが PSH フラグのない単純な ACK TCP パケットでリクエスト クエリ パケットに応答する理由を誰か教えてください。

4

1 に答える 1

1

TCP ack は、アプリケーション (mysql プロトコル) レベルではなく、TCP レベルにあります。

TCP スタックは、送信したデータに対して ACK を返します。これは、データを正常に受信し、データをユーザー (この場合は mysql サーバー) に渡した可能性があることを意味します。

したがって、MySQLサーバーはクエリの実行でビジーであり、クエリの実行が完了すると、アプリケーションの応答(探しているMySQLの「応答OK」メッセージ)が返されます(この場合、何らかの理由で20秒) - I/O 競合が発生している可能性があります。おそらく、実行時間の長い他のクエリがロックを保持しているか、クエリの結果として他の重い作業を実行する必要があります。

于 2013-11-04T13:32:12.723 に答える