events_waits_current
テーブルには、スレッドの最新のモニター対象待機イベントの現在のステータスを示すスレッドごとに 1 行で現在の待機イベントが格納されます。
events_waits_current
テーブルは TRUNCATE TABLE
で切り捨てることができます。
待機イベント行を格納するテーブルのうち、events_waits_current
はもっとも基本的です。待機イベント行を格納するほかのテーブルは論理的に現在のイベントから派生します。たとえば、events_waits_history
および events_waits_history_long
テーブルは固定の行数以下の最新の待機イベントのコレクションです。
待機イベント収集の構成については、セクション22.9.4「パフォーマンススキーマ待機イベントテーブル」を参照してください。
events_waits_current
テーブルにはこれらのカラムがあります。
-
THREAD_ID
、EVENT_ID
イベントに関連付けられたスレッドとイベントの起動時のスレッドの現在のイベント番号。一緒に取得された
THREAD_ID
およびEVENT_ID
値は、行を一意に識別する主キーを形成します。2 つの行が同じ値のペアを持つことはありません。 -
END_EVENT_ID
このカラムは、イベントの起動時に
NULL
に設定され、イベントの終了時にスレッドの現在のイベント番号に更新されます。このカラムは、MySQL 5.6.4 で追加されました。 -
EVENT_NAME
イベントを生成したインストゥルメントの名前。これは
setup_instruments
テーブルからのNAME
値です。セクション22.4「パフォーマンススキーマインストゥルメント命名規則」に説明するように、インストゥルメント名には複数の部分があり、階層を形成することがあります。 -
SOURCE
イベントを生成した、インストゥルメントされたコードを格納するソースファイルの名前と、インストゥルメンテーションが行われたファイルの行番号。これにより、ソースをチェックして、コードに含まれるものを正確に判断することができます。たとえば、相互排他ロックまたはロックがブロックされた場合、これが発生するコンテキストをチェックできます。
-
TIMER_START
、TIMER_END
、TIMER_WAIT
イベントのタイミング情報。これらの値の単位はピコ秒 (秒の 1 兆分の 1) です。
TIMER_START
およびTIMER_END
値は、イベントのタイミングが開始されたときと終了したときを示します。TIMER_WAIT
はイベントの経過時間 (期間) です。イベントが終了していない場合、
TIMER_END
とTIMER_WAIT
はNULL
です。イベントが
TIMED = NO
のインストゥルメントから生成されている場合、タイミング情報は収集されず、TIMER_START
、TIMER_END
、およびTIMER_WAIT
はすべてNULL
になります。イベント時間の単位としてのピコ秒および時間値に影響する要因については、セクション22.2.3.1「パフォーマンススキーマイベントタイミング」を参照してください。
-
SPINS
相互排他ロックの場合、スピンラウンドの数。値が
NULL
の場合、コードはスピンラウンドを使用しないか、スピニングがインストゥルメントされません。 -
OBJECT_SCHEMA
、OBJECT_NAME
、OBJECT_TYPE
、OBJECT_INSTANCE_BEGIN
これらのカラムは「作用している」オブジェクトを識別します。その意味は、オブジェクトの種類によって異なります。
同期オブジェクト (
cond
、mutex
、およびrwlock
) の場合:OBJECT_SCHEMA
、OBJECT_NAME
、およびOBJECT_TYPE
はNULL
です。OBJECT_INSTANCE_BEGIN
はメモリー内の同期オブジェクトのアドレスです。
ファイル I/O オブジェクトの場合:
OBJECT_SCHEMA
はNULL
です。OBJECT_NAME
はファイル名です。OBJECT_TYPE
はFILE
です。OBJECT_INSTANCE_BEGIN
はメモリー内のアドレスです。
ソケットオブジェクトの場合:
OBJECT_NAME
はソケットのIP:PORT
値です。OBJECT_INSTANCE_BEGIN
はメモリー内のアドレスです。
テーブル I/O オブジェクトの場合:
OBJECT_SCHEMA
はテーブルを格納するスキーマの名前です。OBJECT_NAME
はテーブル名です。OBJECT_TYPE
は永続的ベーステーブルのTABLE
または一時テーブルのTEMPORARY TABLE
です。OBJECT_INSTANCE_BEGIN
はメモリー内のアドレスです。
OBJECT_INSTANCE_BEGIN
値自体には、さまざまな値がさまざまなオブジェクトを示すことを除いて、意味がありません。OBJECT_INSTANCE_BEGIN
はデバッグに使用できます。たとえば、それをGROUP BY OBJECT_INSTANCE_BEGIN
で使用して、1,000 相互排他ロック (つまり、データの 1,000 ページまたはブロックを保護する) の負荷が均等に広がっているか、または少数のボトルネックだけに関わっているかを確認できます。これにより、ログファイルやほかのデバッグまたはパフォーマンスツールで同じオブジェクトアドレスが見られた場合に、情報のほかのソースと関連付けることができます。 -
INDEX_NAME
使用されるインデックスの名前。
PRIMARY
はテーブルプライマリインデックスを示します。NULL
はインデックスが使用されなかったことを意味します。 -
NESTING_EVENT_ID
このイベントが中にネストされているイベントの
EVENT_ID
値。MySQL 5.6.3 より前では、このカラムは常にNULL
です。 -
NESTING_EVENT_TYPE
ネストしているイベントの種類。値は
STATEMENT
、STAGE
、またはWAIT
です。このカラムは、MySQL 5.6.3 で追加されました。 -
OPERATION
lock
、read
、またはwrite
などの実行される操作の種類。 -
NUMBER_OF_BYTES
操作によって読み取りまたは書き込まれるバイト数。テーブル I/O 待機 (
wait/io/table/sql/handler
インストゥルメントのイベント) の場合、NUMBER_OF_BYTES
はNULL
になります。 -
FLAGS
将来使用するために予約されています。