このページは機械翻訳したものです。
次の説明は、Rewriter クエリーリライトプラグインに関連付けられたこれらの要素への参照として機能します:
query_rewriteデータベースのRewriterルールテーブルRewriterプロシージャおよび関数Rewriterのシステム変数とステータス変数
query_rewrite データベースの rewrite_rules テーブルは、Rewriter プラグインがステートメントをリライトするかどうかを決定するために使用するルールの永続記憶域を提供します。
ユーザーは、このテーブルに格納されているルールのセットを変更することによって、プラグインと通信します。 プラグインは、テーブル message カラムを設定することによって、ユーザーに情報を伝達します。
ルールテーブルは、flush_rewrite_rules ストアドプロシージャによってプラグインにロードされます。 最新のテーブルの変更後にプロシージャがコールされていないかぎり、テーブルの内容がプラグインが使用しているルールのセットに対応しているとはかぎりません。
rewrite_rules テーブルには、次のカラムがあります:
-
idルール ID。 このカラムはテーブルの主キーです。 この ID を使用して、任意のルールを一意に識別できます。
-
patternルールが一致するステートメントのパターンを示すテンプレート。
?を使用して、データ値と一致するパラメータマーカーを表します。 -
pattern_databaseステートメントの未修飾のテーブル名を照合するために使用されるデータベース。 ステートメントの修飾テーブル名は、対応するデータベース名とテーブル名が同一の場合、パターンの修飾名と一致します。 ステートメント内の修飾されていないテーブル名は、デフォルトのデータベースが
pattern_databaseと同じで、テーブル名が同一の場合にのみ、パターン内の修飾されていない名前と一致します。 -
replacementpatternのカラム値と一致するステートメントのリライト方法を示すテンプレート。?を使用して、データ値と一致するパラメータマーカーを表します。 リライトされたステートメントでは、patternの対応するマーカーに一致するデータ値を使用して、replacementの?パラメータマーカーがプラグインによって置換されます。 -
enabledルールが有効かどうか。 (
flush_rewrite_rules()ストアドプロシージャの起動によって実行される) ロード操作では、このカラムがYESの場合にのみ、ルールがテーブルからRewriterインメモリーキャッシュにロードされます。このカラムでは、ルールを削除せずに非アクティブ化できます: カラムを
YES以外の値に設定し、プラグインにテーブルをリロードします。 -
messageプラグインは、ユーザーとの通信にこのカラムを使用します。 ルールテーブルがメモリーにロードされたときにエラーが発生しない場合、プラグインは
messageカラムをNULLに設定します。NULL以外の値はエラーを示し、カラムの内容はエラーメッセージです。 エラーは、次の状況で発生する可能性があります:パターンまたは置換のいずれかが、構文エラーを生成する不適切な SQL ステートメントです。
置換には、パターンより多くの
?パラメータマーカーが含まれています。
ロードエラーが発生した場合、プラグインは
Rewriter_reload_errorステータス変数もONに設定します。 -
pattern_digestこのカラムは、デバッグおよび診断に使用されます。 ルールテーブルがメモリーにロードされたときにカラムが存在する場合、プラグインはそれをパターンダイジェストで更新します。 このカラムは、一部のステートメントのリライトに失敗した理由を判断しようとする場合に役立つことがあります。
-
normalized_patternこのカラムは、デバッグおよび診断に使用されます。 ルールテーブルがメモリーにロードされたときにカラムが存在する場合、プラグインは正規化された形式のパターンで更新します。 このカラムは、一部のステートメントのリライトに失敗した理由を判断しようとする場合に役立つことがあります。
Rewriter プラグイン操作では、ルールテーブルをインメモリーキャッシュにロードするストアドプロシージャとヘルパーユーザー定義関数 (UDF) を使用します。 通常の操作では、ユーザーはストアドプロシージャのみを起動します。 UDF は、ユーザーが直接呼び出すのではなく、ストアドプロシージャによって呼び出されることを意図しています。
-
flush_rewrite_rules()このストアドプロシージャは、
load_rewrite_rules()UDF を使用して、rewrite_rulesテーブルの内容をRewriterインメモリーキャッシュにロードします。flush_rewrite_rules()のコールは、COMMITを暗黙的に意味します。ルールテーブルを変更した後にこのプロシージャを起動して、プラグインが新しいテーブルの内容からキャッシュを更新するようにします。 エラーが発生した場合、プラグインはテーブル内の適切なルール行の
messageカラムを設定し、Rewriter_reload_errorステータス変数をONに設定します。 -
この UDF は、
flush_rewrite_rules()ストアドプロシージャで使用されるヘルパールーチンです。
Rewriter クエリーリライトプラグインでは、次のシステム変数がサポートされます。 これらの変数は、プラグインがインストールされている場合にのみ使用できます (セクション5.6.4.1「リライタのクエリーリライトプラグインのインストールまたはアンインストール」 を参照)。
-
システム変数 rewriter_enabledスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONRewriterクエリーリライトプラグインが有効かどうか。 -
システム変数 rewriter_verboseスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer 内部使用。
Rewriter クエリーリライトプラグインでは、次のステータス変数がサポートされます。 これらの変数は、プラグインがインストールされている場合にのみ使用できます (セクション5.6.4.1「リライタのクエリーリライトプラグインのインストールまたはアンインストール」 を参照)。
-
Rewriterプラグインで使用するためにrewrite_rulesテーブルからメモリーに正常にロードされたリライトプラグインのリライトルールの数。 -
Rewriterプラグインで使用されるインメモリーキャッシュにrewrite_rulesテーブルがロードされた回数。 -
Rewriter_number_rewritten_queriesRewriterクエリーリライトプラグインがロードされてからリライトされたクエリーの数。 -
Rewriterプラグインで使用されるインメモリーキャッシュにrewrite_rulesテーブルが最後にロードされたときにエラーが発生したかどうか。 値がOFFの場合、エラーは発生していません。 値がONの場合、エラーが発生しました。rewriter_rulesテーブルのmessageカラムでエラーメッセージを確認してください。