MySQL 5.6.5現在,パフォ。ダereplicationジェストは,sqlステereplicationトメントを正規化形式に変換し,結果のハッシュ値を計算します。正規化により,類似のステートメントがグループ化され,要約されて,サーバーが実行しているステートメントの種類とそれらが発生する頻度に関する情報が公開されます。このセクションでは,どのようにステートメントの正規化が行われ,どのように役立つ可能性があるかについて説明します。
ステ,これらのパフォ。
setup_consumers
テブル内のstatement_digest
コンシュマは,パフォジェスト情報を保守するかどうかを制御します。ステトメントベントテブル(
events_statements_current
、events_statements_history
,およびevents_statements_history_long
)には,ダ消化
およびDIGEST_TEXT
カラムがあります。events_statements_summary_by_digest
テブルは集計されたステトメントダジェスト情報を提供します。
ステートメントの正規化によって,ステートメントテキストは,一般的なステートメント構造を保持しながら,構造に不可欠でない情報を削除する,より標準化された文字列表現に変換されます。デタベスまたはテブル名などのオブジェクト識別子は保持されます。値とコメントは削除され,空白は調整されます。パフォマンススキマは,名前,パスワド,日付などの情報を保持しません。
これらのステトメントを考慮してください。
SELECT * FROM orders WHERE customer_id=10 AND quantity>20
これらのステトメントを正規化するため,パフォ?
に置換し,空白を調整します。どらのステトメントも同じ正規化形式になるため,「同じ」とみなされます。
SELECT * FROM orders WHERE customer_id = ?和数量> ?
正規化されたステートメントは,格納される情報は少ないですが,引き続き元のステートメントを代表しています。さまざまな比較値を持ほかの類似のステトメントは同じ正規化形式になります。
ここで,これらのステトメントを考慮してください。
SELECT * FROM customers WHERE customer_id = 1000
この場合,ステトメントは「同じ」ではありません。オブジェクト識別子が異なるため,ステトメントは異なる正規化形式になります。
SELECT * FROM customers WHERE customer_id = ?SELECT * FROM orders WHERE customer_id = ?
正規化されたステトメントは固定長です。DIGEST_TEXT
値の最大長は1024ババ。この最大を変更するオプションはありません。正規化によって,この長さを超えるステ,トメントが生成された場合,テキストは「...」で終わります。「...」のあとの部分のみが異なる長いステトメントは同じとみなされます。これらのステトメントを考慮してください。
从可乐值为10且可乐值为20的表中查询*
和
の直後にカットオフが発生した場合,両方のステトメントがこの正規化形式になります。
SELECT * FROM mytable WHERE cola = ?和…
この場合,2 .目のカラム名の違いが失われ,両方のステトメントが同じとみなされます。
正規化された各ステートメントについて,パフォーマンススキーマはハッシュダイジェスト値を計算し,その値とステートメントをステートメントイベントテーブル(events_statements_current
、events_statements_history
,およびevents_statements_history_long
)の消化
およびDIGEST_TEXT
カラムに格納します。さらに,同じSCHEMA_NAME
および消化
値を持ステトメントの情報がevents_statements_summary_by_digest
サマリテブルに集計されます。パフォマンススキマはmd5ハッシュ値を使用します。それらは計算が速く,競合を最小にする望ましい統計的分布を持ためです。
events_statements_summary_by_digest
サマリテブルは固定サズであるため,それがいっぱいになると,テブル内の既存の値に一致しないSCHEMA_NAME
および消化
値のあるステトメントは,SCHEMA_NAME
および消化
が零
に設定された特別な行にグルプ化されます。これにより,すべてのステトメントがカウントされます。ただし,特別な行が,実行されるステートメントの大きな割合を占める場合,サマリーテーブルのサイズを増やすことが望ましい可能性があります。これを実行するには,サ,バ,の起動時に,performance_schema_digests_size
システム変数を大きな値に設定します。performance_schema_digests_size
値が指定されていない場合,サバは起動時に使用する値を推定します。(MySQL 5.6.9より前では,SCHEMA_NAME
カラム値がなく,特別な行の消化
は零
に設定されます。)
ステートメントダイジェストサマリーテーブルは,サーバーによって実行されるステートメントのプロファイルを提供します。それは,アプリケションが実行しているステトメントの種類とその頻度を示します。アプリケーション開発者はこの情報をテーブル内のほかの情報と組み合わせて使用し,アプリケーションのパフォーマンス特性を査定できます。たとえば,待機時間,ロック時間,またはインデックスの使用を示すテーブルカラムは不十分なクエリーの種類を強調表示することができます。これにより,開発者が注意が必要なアプリケションの部分を把握できます。