動かざることバグの如し

近づきたいよ 君の理想に

MySQLの「Sending data」はクライアントへのデータ転送である

MySQLでshow processlistを眺めていたときに「Sending Data」に結構時間を取られていたので調べると以下の記事が出てきた。

tsurugeek.hatenablog.jp

「データの読み込みとフィルタリング」ということだ。
「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」との違いは何なんだ