MySQLでshow processlistを眺めていたときに「Sending Data」に結構時間を取られていたので調べると以下の記事が出てきた。
「データの読み込みとフィルタリング」ということだ。
「Sending data」はクライアントへのデータ転送ではなかった。
って言ってるけどMySQLの公式ドキュメントには
Sending data スレッドは SELECT ステートメントの行を読み取り、処理して、データをクライアントに送信しています。 この状態で行われる操作は、大量のディスクアクセス (読み取り) を実行する傾向があるため、
特定のクエリーの存続期間にわたる最長時間実行状態になることがあります。
データをクライアントに送信も含まれてるやんけ
結論
MySQLの「Sending Data」は、データの読み込み+フィルタリング+クライアントへのデータ送信のトータルを指す。ややこしいな
蛇足
が、MySQL 5.7の公式ドキュメントを見ると、なんと「Sending to client」という項目が新たにある
https://dev.mysql.com/doc/refman/5.7/en/general-thread-states.htmldev.mysql.com
Sending to client
The server is writing a packet to the client. This state is called Writing to net prior to MySQL 5.7.8.
ん?これ間違ってなければ「MySQL 5.7.8より前のバージョンで呼ばれる」って意味だよね?じゃあ「Sending Data」との違いは何なんだ