Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  MySQL パフォーマンススキーマ  /  パフォーマンススキーマインストゥルメント命名規則

22.4 パフォーマンススキーマインストゥルメント命名規則

インストゥルメント名は '/' 文字で区切られた一連のコンポーネントから構成されます。名前の例:

wait/io/file/myisam/log
wait/io/file/mysys/charset
wait/lock/table/sql/handler
wait/synch/cond/mysys/COND_alarm
wait/synch/cond/sql/BINLOG::update_cond
wait/synch/mutex/mysys/BITMAP_mutex
wait/synch/mutex/sql/LOCK_delete
wait/synch/rwlock/sql/Query_cache_query::lock
stage/sql/closing tables
stage/sql/Sorting result
statement/com/Execute
statement/com/Query
statement/sql/create_table
statement/sql/lock_tables

インストゥルメントの名前空間はツリー状の構造を持ちます。インストゥルメント名のコンポーネントは左から右に、より一般的からより具体的に進みます。名前のコンポーネント数はインストゥルメントの種類によって異なります。

名前の特定のコンポーネントの解釈は、その左側のコンポーネントによって異なります。たとえば、myisam は次の名前の両方に見られますが、最初の名前の myisam はファイル I/O に関連し、2 番目のそれは同期インストゥルメントに関連しています。

wait/io/file/myisam/log
wait/synch/cond/myisam/MI_SORT_INFO::cond

インストゥルメント名は、パフォーマンススキーマ実装によって定義された構造を持つプリフィクスと、インストゥルメントコードを実装する開発者によって定義されるサフィクスから構成されます。インストゥルメントプリフィクスのトップレベルコンポーネントはインストゥルメントの種類を示します。このコンポーネントによって、インストゥルメントに適用される setup_timers テーブル内のイベントタイマーも決まります。インストゥルメントのプリフィクス部分のトップレベルはインストゥルメントの種類を示します。

インストゥルメント名のサフィクス部分は、インストゥルメント自体のコードから生成されます。サフィクスには次のようなレベルが含まれることがあります。

  • 主要コンポーネントの名前 (myisaminnodbmysys、または sql などのサーバーモジュール) またはプラグイン名。

  • 形式 XXX (グローバル変数) または CCC::MMM (クラス CCC のメンバー MMM) でのコード内の変数の名前。例: COND_thread_cacheTHR_LOCK_myisamBINLOG::LOCK_index

トップレベルインストゥルメントコンポーネント

  • idle: インストゥルメントされたアイドルイベント。このインストゥルメントにはそれ以上のコンポーネントがありません。

  • stage: インストゥルメントされたステージイベント。

  • statement: インストゥルメントされたステートメントイベント。

  • wait: インストゥルメントされた待機イベント。

アイドルインストゥルメントコンポーネント

ステージインストゥルメントコンポーネント

ステージインストゥルメントは、形式 stage/code_area/stage_name の名前を持ちます。ここで code_areasqlmyisam などの名前で、stage_name は、Sorting resultSending data などのステートメント処理のステージを示します。ステージは SHOW PROCESSLIST によって表示されるか、または INFORMATION_SCHEMA.PROCESSLIST テーブルに表示されるスレッドの状態に対応します。

ステートメントインストゥルメントコンポーネント

  • statement/abstract/*: ステートメント操作の抽象インストゥルメント。抽象インストゥルメントは、正確なステートメントの種類が分かる前のステートメント分類の初期段階時に使用され、その後種類がわかったときに、より具体的なステートメントインストゥルメントに変更されます。このプロセスの説明については、セクション22.9.6「パフォーマンススキーマステートメントイベントテーブル」を参照してください。

  • statement/com: インストゥルメントされたコマンド操作。これらは COM_xxx 操作に対応する名前を持ちます (mysql_com.h ヘッダーファイルおよび sql/sql_parse.cc を参照してください。たとえば、statement/com/Connect および statement/com/Init DB インストゥルメントは COM_CONNECT および COM_INIT_DB コマンドに対応します。

  • statement/sql: インストゥルメントされた SQL ステートメント操作。たとえば、statement/sql/create_db および statement/sql/select インストゥルメントは CREATE DATABASE および SELECT ステートメントに使用されます。

待機インストゥルメントコンポーネント

  • wait/io

    インストゥルメントされた I/O 操作。

    • wait/io/file

      インストゥルメントされたファイル I/O 操作。ファイルの場合、待機はファイル操作の完了 (たとえば、fwrite() の呼び出し) を待機する時間です。キャッシュのため、この呼び出し内で、ディスクへの物理的なファイル I/O は行われない可能性があります。

    • wait/io/socket

      インストゥルメントされたソケット操作。ソケットインストゥルメントは形式 wait/io/socket/sql/socket_type の名前を持ちます。サーバーには、それがサポートする各ネットワークプロトコルの待機ソケットがあります。TCP/IP または Unix ソケットファイル接続の待機ソケットに関連付けられているインストゥルメントは、それぞれ server_tcpip_socket または server_unix_socketsocket_type 値を持ちます。待機ソケットが接続を検出すると、サーバーは接続を、個別のスレッドによって管理される新しいソケットに転送します。新しい接続スレッドのインストゥルメントは、client_connectionsocket_type 値を持ちます。

    • wait/io/table

      インストゥルメントされたテーブル I/O 操作。これらには、永続的ベーステーブルまたは一時テーブルへの行レベルアクセスが含まれます。行に影響する操作は、フェッチ、挿入、更新、および削除です。ビューの場合、待機はビューによって参照されるベーステーブルに関連付けられます。

      ほとんどの待機と同様、テーブル I/O の待機にはほかの待機も含まれることがあります。たとえば、テーブル I/O にはファイル I/O またはメモリー操作が含まれることがあります。そのため、テーブル I/O 待機の events_waits_current には通常 2 行あります。詳細については、セクション22.6「パフォーマンススキーマの原子的および分子的イベント」を参照してください。

      一部の行操作では、複数のテーブル I/O 待機が発生することがあります。たとえば、挿入は更新を発生させるトリガーをアクティブにすることがあります。

  • wait/lock

    インストゥルメントされたロック操作。

    • wait/lock/table

      インストゥルメントされたテーブルロック操作。

  • wait/synch

    インストゥルメントされた同期オブジェクト。同期オブジェクトでは、TIMER_WAIT 時間には、オブジェクトへのロックがある場合に、その獲得を試みている間のブロックされる時間の量が含まれます。

    • wait/synch/cond

      条件は、1 つのスレッドによって、ほかのスレッドに、それらが待機している何かが発生したことを伝えるために使用されます。単一のスレッドが条件を待機していた場合、それはウェイクアップし、その実行を再開できます。複数のスレッドが待機していた場合、それらすべてがウェイクアップし、それらが待機していたリソースを奪い合うことがあります。

    • wait/synch/mutex

      ほかのスレッドのリソースへのアクセスを妨げながら、リソース (実行可能コードのセクションなど) へのアクセスを許可するために使用される相互排他オブジェクト。

    • wait/synch/rwlock

      ほかのスレッドによるその使用を妨げながら、特定の変数のアクセスをロックするために使用される読み取り/書き込みロックオブジェクト。共有読み取りロックは複数のスレッドによって同時に獲得できます。排他的書き込みロックは、一度に 1 つのスレッドだけが獲得できます。


User Comments
Sign Up Login You must be logged in to post a comment.