10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb


22.9.6パフォマンススキマステ

MySQL 5.6.3現在,パフォーマンススキーマはステートメント実行をインストゥルメントします。ステ。待機イベントはステージイベント内にネストし,ステージイベントはステートメントイベント内にネストします。

これらのテブルはステトメントベントを格納します。

  • events_statements_current:現在のステトメント

  • events_statements_history:各スレッドの最新のステトメント

  • events_statements_history_long:全体の最新のステトメント

次のセクションでそれらのテブルにいて説明します。ステトメント。セクション22.9.9.3 "ステトメントサマリテブル"を参照してください。

ステトメント

ステ。

setup_instrumentsテブルには,声明で始まる名前を持ンストゥルメントが格納されます。これらの邮箱ンストゥルメントはデフォルトで有効にされています。

SELECT * FROM setup_instruments WHERE NAME LIKE 'statement/%';+---------------------------------------------+---------+-------+ | 名字| |定时启用  | +---------------------------------------------+---------+-------+ | 声明/ sql /选择|是的| | |声明/ sql / create_table |是的| | |声明/ sql / create_index |是的| |…| statement/sp/stmt | YES | YES | | statement/sp/set | YES | YES | | statement/sp/set_trigger_field | YES | YES | b| statement/scheduler/event | YES | YES | | statement/com/Sleep | YES | YES | | statement/com/Quit | YES | YES | | statement/com/Init DB | YES | YES |…|声明/文摘/查询|是的| | |声明/文摘/ new_packet |是的| | |声明/文摘/ relay_log | |是的  | +---------------------------------------------+---------+-------+

ステトメント启用および时机カラムを変更します。例:

mysql> UPDATE setup_instruments SET ENABLED = 'NO' -> WHERE NAME LIKE 'statement/com/%';

setup_consumersテーブルには現在および最近のステートメントイベントテーブル名に対応する名前を持つコンシューマ値とステートメントダイジェストコンシューマが格納されます。これらのコンシューマはステートメントイベントのコレクションとステートメントダイジェストをフィルタ処理するために使用できます。events_statements_currentstatements_digestのみがデフォルトで有効にされています。

mysql> SELECT * FROM setup_consumers WHERE NAME LIKE '%statements%';+--------------------------------+---------+ | 启用名字|  | +--------------------------------+---------+ | 没有events_statements_current |是| | events_statements_history | | | events_statements_history_long没有| | | statements_digest |是的  | +--------------------------------+---------+

すべてのステトメントコンシュマを有効にするには,次を実行します。

mysql> UPDATE setup_consumers SET ENABLED = 'YES' -> WHERE NAME LIKE '%statements%';

setup_timerテブルには,ステ声明的名字値のある行が格納されます。デフォルトの単位は纳秒です。

SELECT * FROM setup_timers WHERE NAME = 'statement';+-----------+------------+ | 名字| TIMER_NAME  | +-----------+------------+ | 声明|纳秒  | +-----------+------------+

タミングの単位を変更するには,TIMER_NAME値を変更します。

mysql> UPDATE setup_timers SET TIMER_NAME = 'MICROSECOND' -> WHERE NAME = 'statement';

帐号ベント収集の構成に関する追加情報に帐号いては,セクション22.2 "パフォマンススキマ構成"を参照してください。

ステトメントモニタリング

ステートメントのモニタリングは,サーバーがスレッドに対してアクティビティーがリクエストされていることを確認した時点から,すべてのアクティビティーが終了した時点までに開始されます。一般に,これはサーバーがクライアントから最初のパケットを受け取ったときから,サーバーが応答の送信を終了したときまでを意味します。モニタリングは,トップレベルステトメントに対してのみ行われます。ストアドプログラムとサブクエリ内のステトメントは別々に見られません。

パフォーマンススキーマがリクエスト(サーバーコマンドまたはSQLステートメント)をインストゥルメントする場合,最終的なインストゥルメント名に到達するまで,より一般的(または抽象的)から,より具体的へと段階を追って進む电子书ンストゥルメント名を使用します。

最終SQLステ。

  • サバコマンドはmysql_com.hヘッダファルに定義され,sql / sql_parse.ccで処理されるCOM_xxx代码に対応します。例はCOM_PINGCOM_QUITです。コマンドのンストゥルメントは,声明/ com/Ping声明/ com/Quitなどの声明/ comから始まる名前を持ます。

  • SQLステトメントは删除从t1またはSELECT * FROM t2などのテキストとして表されます。SQLステトメントのンストゥルメントは,声明/ sql /删除声明/ sql /选择などの声明/ sqlから始まる名前を持ます。

いく。

  • 声明/ com/Errorは帯域外のサバによって受信されたメッセジから構成されます。これはサバが理解しないクラアントによって送信されたコマンドを検出するために使用できます。これは,構成が誤っているか,サーバーよりも新しいMySQLのバージョンを使用しているクライアントや,サーバーへの攻撃を試みているクライアントの識別などの目的で役に立つことがあります。

  • 声明/ sql /错误は解析に失敗したSQLステトメントから構成されます。これはクラ邮箱アントによって送信された不正な形式のクエリ邮箱を検出するために使用できます。解析に失敗するクエリは,解析するが,実行中のエラと異なります。たとえば,SELECT * FROMは不正な形式で,声明/ sql /错误ンストゥルメントが使用されます。対照的にSELECT *は解析しますが,“表が指定されていません”エラを伴って失敗します。この場合,声明/ sql /选择が使用され,ステ。

リクエストはこれらの任意のソスから取得できます。

  • リクエストをパケットとして送信するクラ邮箱アントからのコマンドまたはステ邮箱トメントリクエストとして

  • レプリケーションスレーブ上のリレーログから読み取られたステートメント文字列として(MySQL 5.6.13以降)

リクエストの詳細は最初は不明で,パフォーマンススキーマはリクエストのソースに依存する順序で,抽象から特定のインストゥルメント名に進みます。

クラ邮箱アントから受信したリクエストの場合:

  1. サバがソケットレベルで新しいパケットを検出すると,新しいステトメントが声明/文摘/ new_packetの抽象邮箱ンストゥルメント名で開始されます。

  2. サーバーはパケット番号を読み取ると,受信したリクエストの種類について詳しく知り,パフォーマンススキーマがインストゥルメント名を絞り込みます。たとえば,リクエストがCOM_PINGパケットの場合,ンストゥルメント名は声明/ com/Pingになり,それが最終名になります。リクエストがCOM_QUERYパケットの場合,それはSQLステートメントに対応するが,特定のステートメントの種類ではないことがわかります。この場合,ンストゥルメントはある抽象名から,やや具体的だが,まだ抽象名である声明/文摘/查询に変更され,リクエストはさらに分類する必要があります。

  3. リクエストがステトメントである場合,ステトメントテキストが読み取られ,パに提供されます。解析後,正確なステトメントの種類が認識されます。リクエストがたとえば插入ステトメントの場合,パフォンストゥルメント名を声明/文摘/查询から最終名である声明/ sql /插入に絞り込みます。

レプリケションスレブ上のリレログからステトメントとして読み取られるリクエストの場合:

  1. リレログ内のステトメントはテキストとして保存され,そのように読み取られます。ネットワクプロトコルはないため,声明/文摘/ new_packetンストゥルメントは使用されません。代わりに、初期以及ンストゥルメントは声明/文摘/ relay_logになります。

  2. ステトメントが解析されると,正確なステトメントの種類が認識されます。リクエストがたとえば插入ステトメントの場合,パフォンストゥルメント名を声明/文摘/查询から最終名である声明/ sql /插入に絞り込みます。

先述の説明はステトメントベスのレプリケションにのみ適用されます。行ベースのレプリケーションでは,行の変更を処理しながら,スレーブで実行されるテーブルI / Oをインストゥルメントできますが,リレーログ内の行イベントは,個別のステートメントとして表示されません。

ステトメントに対して収集される統計の場合,各ステトメントの種類に使用される最終声明/ sql / *ンストゥルメントを有効にするだけでは十分ではありません。抽象声明抽象/ * /ンストゥルメントも有効にする必要があります。すべてのステートメントインストゥルメントがデフォルトで有効にされるため,これは通常問題にならないはずです。ただし,ステートメントインストゥルメントを選択して有効または無効にするアプリケーションは,抽象インストゥルメントを無効にすると,個々のステートメントインストゥルメントの統計収集も無効になることを考慮する必要があります。たとえば,插入ステトメントの統計を収集するには,声明/ sql /插入を有効にする必要がありますが,声明/文摘/ new_packet声明/文摘/查询も有効にする必要があります。同様に,レプリケ,トされたステ,トメントを,声明/文摘/ relay_logが有効にされている必要があります。

ステトメントが最終ステトメント名として抽象ンストゥルメントに分類されることはないため,声明/文摘/查询などの抽象邮箱ンストゥルメントに対して統計は集計されません。

先述の説明の抽象インストゥルメント名はMySQL 5.6.15現在です.5.6より前では,それらの名前が決定されるまでに,いくらかの名前の変更がありました。

  • MySQL 5.6.14では声明/文摘/ new_packet声明/ com/で,MySQL 5.6.13では声明/ com/new_packetで,それ以前は声明/ com/でした。

  • MySQL 5.6.15より前では,声明/文摘/查询声明/ com/Queryでした。

  • MySQL 5.6.13から5.6.14では声明/文摘/ relay_log声明/ rpl / relay_logで,それより前は存在していませんでした。


本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb