Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  リライタクエリーリライトプラグインリファレンス

このページは機械翻訳したものです。

5.6.4.3 リライタクエリーリライトプラグインリファレンス

次の説明は、Rewriter クエリーリライトプラグインに関連付けられたこれらの要素への参照として機能します:

  • query_rewrite データベースの Rewriter ルールテーブル

  • Rewriter プロシージャおよび関数

  • Rewriter のシステム変数とステータス変数

5.6.4.3.1 リライタクエリーリライトプラグインルールテーブル

query_rewrite データベースの rewrite_rules テーブルは、Rewriter プラグインがステートメントをリライトするかどうかを決定するために使用するルールの永続記憶域を提供します。

ユーザーは、このテーブルに格納されているルールのセットを変更することによって、プラグインと通信します。 プラグインは、テーブル message カラムを設定することによって、ユーザーに情報を伝達します。

注記

ルールテーブルは、flush_rewrite_rules ストアドプロシージャによってプラグインにロードされます。 最新のテーブルの変更後にプロシージャがコールされていないかぎり、テーブルの内容がプラグインが使用しているルールのセットに対応しているとはかぎりません。

rewrite_rules テーブルには、次のカラムがあります:

  • id

    ルール ID。 このカラムはテーブルの主キーです。 この ID を使用して、任意のルールを一意に識別できます。

  • pattern

    ルールが一致するステートメントのパターンを示すテンプレート。 ? を使用して、データ値と一致するパラメータマーカーを表します。

  • pattern_database

    ステートメントの未修飾のテーブル名を照合するために使用されるデータベース。 ステートメントの修飾テーブル名は、対応するデータベース名とテーブル名が同一の場合、パターンの修飾名と一致します。 ステートメント内の修飾されていないテーブル名は、デフォルトのデータベースが pattern_database と同じで、テーブル名が同一の場合にのみ、パターン内の修飾されていない名前と一致します。

  • replacement

    pattern のカラム値と一致するステートメントのリライト方法を示すテンプレート。 ? を使用して、データ値と一致するパラメータマーカーを表します。 リライトされたステートメントでは、pattern の対応するマーカーに一致するデータ値を使用して、replacement? パラメータマーカーがプラグインによって置換されます。

  • enabled

    ルールが有効かどうか。 (flush_rewrite_rules() ストアドプロシージャの起動によって実行される) ロード操作では、このカラムが YES の場合にのみ、ルールがテーブルから Rewriter インメモリーキャッシュにロードされます。

    このカラムでは、ルールを削除せずに非アクティブ化できます: カラムを YES 以外の値に設定し、プラグインにテーブルをリロードします。

  • message

    プラグインは、ユーザーとの通信にこのカラムを使用します。 ルールテーブルがメモリーにロードされたときにエラーが発生しない場合、プラグインは message カラムを NULL に設定します。 NULL 以外の値はエラーを示し、カラムの内容はエラーメッセージです。 エラーは、次の状況で発生する可能性があります:

    • パターンまたは置換のいずれかが、構文エラーを生成する不適切な SQL ステートメントです。

    • 置換には、パターンより多くの ? パラメータマーカーが含まれています。

    ロードエラーが発生した場合、プラグインは Rewriter_reload_error ステータス変数も ON に設定します。

  • pattern_digest

    このカラムは、デバッグおよび診断に使用されます。 ルールテーブルがメモリーにロードされたときにカラムが存在する場合、プラグインはそれをパターンダイジェストで更新します。 このカラムは、一部のステートメントのリライトに失敗した理由を判断しようとする場合に役立つことがあります。

  • normalized_pattern

    このカラムは、デバッグおよび診断に使用されます。 ルールテーブルがメモリーにロードされたときにカラムが存在する場合、プラグインは正規化された形式のパターンで更新します。 このカラムは、一部のステートメントのリライトに失敗した理由を判断しようとする場合に役立つことがあります。

5.6.4.3.2 リライタのクエリーリライトプロシージャおよび関数

Rewriter プラグイン操作では、ルールテーブルをインメモリーキャッシュにロードするストアドプロシージャとヘルパーユーザー定義関数 (UDF) を使用します。 通常の操作では、ユーザーはストアドプロシージャのみを起動します。 UDF は、ユーザーが直接呼び出すのではなく、ストアドプロシージャによって呼び出されることを意図しています。

  • flush_rewrite_rules()

    このストアドプロシージャは、load_rewrite_rules() UDF を使用して、rewrite_rules テーブルの内容を Rewriter インメモリーキャッシュにロードします。

    flush_rewrite_rules() のコールは、COMMIT を暗黙的に意味します。

    ルールテーブルを変更した後にこのプロシージャを起動して、プラグインが新しいテーブルの内容からキャッシュを更新するようにします。 エラーが発生した場合、プラグインはテーブル内の適切なルール行の message カラムを設定し、Rewriter_reload_error ステータス変数を ON に設定します。

  • load_rewrite_rules()

    この UDF は、flush_rewrite_rules() ストアドプロシージャで使用されるヘルパールーチンです。

5.6.4.3.3 リライタのクエリーリライトプラグインのシステム変数

Rewriter クエリーリライトプラグインでは、次のシステム変数がサポートされます。 これらの変数は、プラグインがインストールされている場合にのみ使用できます (セクション5.6.4.1「リライタのクエリーリライトプラグインのインストールまたはアンインストール」 を参照)。

  • rewriter_enabled

    システム変数 rewriter_enabled
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    Rewriter クエリーリライトプラグインが有効かどうか。

  • rewriter_verbose

    システム変数 rewriter_verbose
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer

    内部使用。

5.6.4.3.4 リライタのクエリーリライトプラグインステータス変数

Rewriter クエリーリライトプラグインでは、次のステータス変数がサポートされます。 これらの変数は、プラグインがインストールされている場合にのみ使用できます (セクション5.6.4.1「リライタのクエリーリライトプラグインのインストールまたはアンインストール」 を参照)。

  • Rewriter_number_loaded_rules

    Rewriter プラグインで使用するために rewrite_rules テーブルからメモリーに正常にロードされたリライトプラグインのリライトルールの数。

  • Rewriter_number_reloads

    Rewriter プラグインで使用されるインメモリーキャッシュに rewrite_rules テーブルがロードされた回数。

  • Rewriter_number_rewritten_queries

    Rewriter クエリーリライトプラグインがロードされてからリライトされたクエリーの数。

  • Rewriter_reload_error

    Rewriter プラグインで使用されるインメモリーキャッシュに rewrite_rules テーブルが最後にロードされたときにエラーが発生したかどうか。 値が OFF の場合、エラーは発生していません。 値が ON の場合、エラーが発生しました。rewriter_rules テーブルの message カラムでエラーメッセージを確認してください。