このページは機械翻訳したものです。
次のリストは、レプリケーションなどの特殊なアクティビティーではなく、一般的なクエリーの処理に関連付けられた、スレッドの State 値を説明しています。 これらの多くは、サーバーのバグを見つけるためにのみ役立ちます。
-
これは、スレッドがテーブル (内部一時テーブルも含む) を作成する際の、テーブルを作成する関数の最後に発生します。 何らかのエラーのためテーブルを作成できなかった場合でも、この状態が使われます。
-
サーバーはインプレース
ALTER TABLEの実行中です。 -
スレッドは
MyISAMテーブルのキー分布を計算しています (ANALYZE TABLEなどで)。 -
スレッドは、サーバーがステートメントを実行するために必要な権限を持っているかどうかを確認しています。
-
スレッドはテーブルチェック操作を実行しています。
-
スレッドは 1 つのコマンドを処理し、メモリーの解放と特定の状態変数のリセットを準備しています。
-
スレッドは、変更されたテーブルデータをディスクにフラッシュし、使用されたテーブルをクローズしています。 これは高速の操作であるはずです。 そうでない場合は、ディスクがいっぱいでないか、ディスクが著しく頻繁に使用されていないかを確認してください。
-
スレッドは内部一時テーブルを
MEMORYテーブルからディスク上のテーブルに変換しています。 -
スレッドは
ALTER TABLEステートメントを処理しています。 この状態は、新しい構造でテーブルが作成されたあと、ただし、それに行がコピーされる前に発生します。この状態のスレッドの場合、パフォーマンススキーマを使用してコピー操作の進行状況を取得できます。 セクション27.12.5「パフォーマンススキーマステージイベントテーブル」を参照してください。
-
ステートメントの
ORDER BYとGROUP BYの基準が異なる場合、行はグループによってソートされ、一時テーブルにコピーされます。 -
サーバーはメモリー内の一時テーブルにコピーしています。
-
サーバーはディスク上の一時テーブルにコピーしています。 一時結果セットが大きくなりすぎました (セクション8.4.4「MySQL での内部一時テーブルの使用」を参照してください)。 その結果、スレッドは一時テーブルをインメモリーからディスクベースのフォーマットに変更して、メモリーを節約します。
-
スレッドは
MyISAMテーブルに対するALTER TABLE ... ENABLE KEYSを処理しています。 -
スレッドは内部一時テーブルを使用して解決される
SELECTを処理しています。 -
スレッドはテーブルを作成しています。 これには一時テーブルの作成が含まれます。
-
スレッドはメモリー内またはディスク上に一時テーブルを作成しています。 テーブルがメモリー内に作成され、後でディスク上のテーブルに変換される場合、その操作中の状態は
Copying to tmp table on diskです。 -
committing alter table to storage engineサーバーはインプレース
ALTER TABLEを終了し、結果をコミットしています。 -
サーバーは複数テーブル削除の最初の部分を実行しています。 最初のテーブルからのみ削除し、別の (参照) テーブルからの削除に使用されるカラムとオフセットを保存しています。
-
deleting from reference tablesサーバーは複数テーブル削除の 2 番目の部分を実行しており、別のテーブルから一致した行を削除しています。
-
スレッドは
ALTER TABLE ... DISCARD TABLESPACEまたはALTER TABLE ... IMPORT TABLESPACEステートメントを処理しています。 -
これは、
ALTER TABLE、CREATE VIEW、DELETE、INSERT、SELECT、またはUPDATEステートメントの最後、ただしクリーンアップの前に発生します。end状態では、次の操作が行われることがあります。バイナリログへのイベントの書き込み
BLOB 用を含むメモリーバッファーの解放
-
スレッドはステートメントの実行を開始しました。
-
スレッドは
init_commandシステム変数の値のステートメントを実行しています。 -
スレッドはコマンドを実行しました。 通常、この状態のあとは
cleaning upになります。 -
サーバーは自然言語全文検索を実行する準備をしています。
-
これは、
ALTER TABLE、DELETE、INSERT、SELECT、またはUPDATEステートメントの初期化の前に発生します。 この状態のサーバーによって実行されるアクションには、バイナリログとInnoDBログのフラッシュが含まれます。 -
だれかがスレッドに
KILLステートメントを送っており、スレッドは次に強制終了フラグをチェックしたときに中止するはずです。 フラグは MySQL の各主要ループ内でチェックされますが、場合によってはスレッドが停止するまでに少し時間がかかる場合があります。 スレッドがほかのスレッドにロックされている場合、強制終了はほかのスレッドがそのロックを解除するとすぐに有効になります。 -
スレッドがシステムテーブル (タイムゾーンやログテーブルなど) をロックしようとしています。
-
スレッドはステートメントを低速クエリーログに書き込んでいます。
-
クライアントが正常に認証されるまでの接続スレッドの初期状態です。
-
サーバーはテーブルインデックスを有効または無効にしています。
-
スレッドがシステムテーブル (タイムゾーンやログテーブルなど) を開こうとしています。
-
スレッドはテーブルをオープンしようと試みています。 これは、何かにオープンを妨げられないかぎり、きわめて高速な手順であるはずです。 たとえば、
ALTER TABLEまたはLOCK TABLEステートメントは、そのステートメントが終了するまでテーブルのオープンを妨げることがあります。table_open_cache値が十分に大きいことをチェックすることも価値があります。システムテーブルの場合は、かわりに
Opening system tablesの状態が使用されます。 -
サーバーはクエリーの初期最適化を実行しています。
-
この状態はクエリーの最適化中に発生します。
-
スレッドは不要なリレーログファイルを削除しています。
-
この状態は、クエリーを処理したあと、ただし
freeing items状態の前に発生します。 -
サーバーはクライアントからパケットを読み取っています。
-
クエリーは、MySQL が早い段階で個別の操作を最適化できなくなるような方法で
SELECT DISTINCTを使用していました。 このため、MySQL は結果をクライアントに送る前にすべての重複した行を削除するための追加の段階を必要とします。 -
スレッドは
SELECTステートメントを処理したあとに内部一時テーブルを削除しています。 一時テーブルが作成されなかった場合、この状態は使用されません。 -
スレッドはテーブルの名前を変更しています。
-
スレッドは
ALTER TABLEステートメントを処理しており、新しいテーブルを作成し、元のテーブルを置き換えるためにその名前を変更しています。 -
スレッドはテーブルのロックを取得しましたが、ロックの取得後、基盤となるテーブル構造が変更されたことを認識しました。 それはロックを解除し、テーブルをクローズして、再度オープンしようとしています。
-
修復コードはインデックスを作成するためにソートを使用しています。
-
サーバーはインプレース
ALTER TABLEの実行を準備しています。 -
スレッドは
MyISAMテーブルのマルチスレッド修復を完了しました。 -
修復コードはキーキャッシュ経由で、1 つずつキーの作成を使用しています。 これは
Repair by sortingよりはるかに遅くなります。 -
スレッドはトランザクションをロールバックしています。
-
MyISAMテーブルの修復や分析などの操作で、スレッドは新しいテーブルの状態を.MYIファイルヘッダーに保存しています。 状態には、行の数、AUTO_INCREMENTカウンタ、キー分布などの情報が含まれています。 -
スレッドは、すべての一致する行を更新する前に、それらを見つけるための第 1 フェーズを実行しています。 これは、
UPDATEが、関連する行を見つけるために使用されるインデックスを変更している場合に、実行される必要があります。 -
Sending dataスレッドは
SELECTステートメントの行を読み取り、処理して、データをクライアントに送信しています。 この状態で行われる操作は、大量のディスクアクセス (読み取り) を実行する傾向があるため、特定のクエリーの存続期間にわたる最長時間実行状態になることがあります。 -
サーバーがクライアントにパケットを書き込んでいます。
-
スレッドは
ALTER TABLE操作を開始しています。 -
スレッドは
GROUP BYを満たすためにソートを実行しています。 -
スレッドは
ORDER BYを満たすためにソートを実行しています。 -
スレッドは
MyISAMテーブルの最適化操作中に、より効率的なアクセスのためにインデックスページをソートしています。 -
SELECTステートメントの場合、これはCreating sort indexと似ていますが、非一時テーブルに対するものです。 -
ステートメントの実行開始時の最初のステージ。
-
サーバーはクエリー実行プランを開発するための統計を計算しています。 スレッドが長期間この状態にある場合、サーバーはディスクに依存してほかの作業を実行している可能性があります。
-
スレッドが
mysql_lock_tables()を呼び出しましたが、以降スレッドの状態は更新されていません。 これは、多くの理由で発生する可能性がある非常に一般的な状態です。たとえば、スレッドがリクエストしようとしているか、テーブルの内部または外部システムロックを待機しています。 これは、
InnoDBがLOCK TABLESの実行中にテーブルレベルのロックを待機している場合に発生することがあります。 この状態が外部ロックへのリクエストによって発生しており、同じMyISAMテーブルにアクセスしている複数の mysqld サーバーを使用していない場合、--skip-external-lockingオプションによって外部システムロックを無効にできます。 ただし、外部ロックはデフォルトで無効になっているため、このオプションは無効になっている可能性があります。SHOW PROFILEの場合、この状態はスレッドがロックをリクエストしている (待機しているのではなく) ことを意味します。システムテーブルの場合は、かわりに
Locking system tablesの状態が使用されます。 -
スレッドはテーブルの更新を開始する準備ができています。
-
スレッドは更新する行を探していて、それらを更新しています。
-
サーバーは複数テーブル更新の最初の部分を実行しています。 最初のテーブルのみを更新しており、別の (参照) テーブルの更新に利用されるカラムとオフセットを保存しています。
-
サーバーは複数テーブル更新の 2 番目の部分を実行しており、ほかのテーブルから一致した行を更新しています。
-
スレッドは
GET_LOCK()呼び出しによってリクエストされたアドバイザリロックを、リクエストしようとしているか待機しています。SHOW PROFILEの場合、この状態はスレッドがロックをリクエストしている (待機しているのではなく) ことを意味します。 -
スレッドは
SLEEP()呼び出しを呼び出しました。 -
FLUSH TABLES WITH READ LOCKはコミットロックを待機しています。 -
スレッドは、クエリー処理の他の部分に対するトランザクションのコミットを待機しています。
-
スレッドは、テーブルの基盤となる構造が変更され、その新しい構造を得るためにテーブルを再度オープンする必要があるという通知を受け取りました。 ただし、テーブルを再度オープンするには、ほかのすべてのスレッドが問題のテーブルをクローズするまで待機する必要があります。
この通知は、別のスレッドが
FLUSH TABLESか、問題のテーブルに次のステートメントのいずれかを使用した場合に、この通知が行われます:FLUSH TABLES、tbl_nameALTER TABLE、RENAME TABLE、REPAIR TABLE、ANALYZE TABLE、またはOPTIMIZE TABLE。 -
スレッドは
FLUSH TABLESを実行しており、すべてのスレッドがテーブルを閉じるのを待機しているか、テーブルの基礎となる構造が変更されたため、新しい構造を取得するにはテーブルを再度開く必要があるという通知をスレッドが受け取りました。 ただし、テーブルを再度オープンするには、ほかのすべてのスレッドが問題のテーブルをクローズするまで待機する必要があります。この通知は、別のスレッドが
FLUSH TABLESか、問題のテーブルに次のステートメントのいずれかを使用した場合に、この通知が行われます:FLUSH TABLES、tbl_nameALTER TABLE、RENAME TABLE、REPAIR TABLE、ANALYZE TABLE、またはOPTIMIZE TABLE。 -
サーバーは、メタデータロックサブシステムからの
THR_LOCKロックまたはロックの取得を待機しています (lock_typeはロックのタイプを示します)。この状態は、
THR_LOCKの待機を示します:Waiting for table level lock
次の状態は、メタデータロックの待機を示します:
Waiting for event metadata lockWaiting for global read lockWaiting for schema metadata lockWaiting for stored function metadata lockWaiting for stored procedure metadata lockWaiting for table metadata lockWaiting for trigger metadata lock
テーブルロックインジケータの詳細は、セクション8.11.1「内部ロック方法」 を参照してください。 メタデータのロックの詳細は、セクション8.11.4「メタデータのロック」 を参照してください。 ロック要求をブロックしているロックを確認するには、セクション27.12.13「パフォーマンススキーマロックテーブル」 で説明されているパフォーマンススキーマロックテーブルを使用します。
-
スレッドが条件が true になるのを待機している一般的な状態です。 特定の状態情報は使用できません。
-
サーバーはネットワークにパケットを書き込んでいます。