180

Mysqlクエリの場合はどういう意味ですか?

SHOW PROCESSLIST;

[状態]列に「データの送信」を返しますか?

クエリが実行され、MySQLが「結果」データをクライアントに送信していることを意味していると思いますが、なぜこれほど時間がかかるのか(最大1時間)疑問に思います。

ありがとうございました。

4

2 に答える 2

281

これはかなり誤解を招くステータスです。これは「データの読み取りとフィルタリング」と呼ばれるべきです。

これは、MySQLまだ読み取られて送信されていないデータがディスク(またはメモリ)に保存されていることを意味します。それは、テーブル自体、インデックス、一時テーブル、ソートされた出力などである可能性があります。

1つのレコードのみが必要な1Mレコードテーブル(インデックスなし)がある場合MySQL、テーブルをスキャンしている間、まだ何も送信していないにもかかわらず、ステータスを「データ送信中」として出力します。

MySQL 8.0.17以降:この状態は個別に表示されなくなり、Executing状態に含まれます。

于 2012-04-27T09:17:20.007 に答える
27

この状態で:

スレッドは、SELECTステートメントの行を読み取って処理し、クライアントにデータを送信しています。

この状態で発生する操作は、 大量のディスクアクセス(読み取り)を実行する傾向があるためです。

そのため、完了するまでに時間がかかり、特定のクエリの存続期間中に最も長く実行されている状態も同様です。

于 2014-07-08T07:33:03.597 に答える