私の歴史と今

振り返ると恥ずかしくなるのが私の歴史。だけどそのときは真面目に書いていた訳でね。そんな今の私を書いていく。

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

MySQLのshow processlistで「Sending data」と表示されている処理はデータ転送だと思っていたが、そうではなかった・・・。先入観って恐ろしい。

今日はサーバが重かったので調べてみたらすべてのコネクションが「Sending data」となっており、処理に3分以上かかっていた。slow queryのログを見ると「limit 1」の検索ばかり。転送なんてあっという間のはず。と思って調べてみたら「Sending data」はクライアントへのデータ転送ではなかった。

「This is quite a misleading status. It should be called "reading and filtering data".」

http://stackoverflow.com/questions/10347193/what-does-it-mean-when-mysql-is-in-the-state-sending-data

「データの読み込みとフィルタリング」ということだ。データを保存している場所を主語として「Sending data 」と表現しているのかな。わからないでもないけど、MySQLの処理なんだから誤解しやすい。