MySQL は、サーバーが SQL ステートメントを実行する前に、サーバーが受け取った SQL ステートメントを調査して変更できるクエリーリライトプログインをサポートしています。 Query Rewrite Pluginsを参照してください。
MySQL ディストリビューションには、Rewriter
という名前の解析後クエリーリライトプラグインと、プラグインおよびその関連要素をインストールするためのスクリプトが含まれています。 これらの要素は連携して、ステートメントのリライト機能を提供します:
Rewriter
という名前のサーバー側プラグインはステートメントを検査し、リライト規則のメモリー内キャッシュに基づいてステートメントを書き換えることができます。-
次のステートメントはリライトの対象となります:
MySQL 8.0.12 の時点:
SELECT
,INSERT
,REPLACE
,UPDATE
およびDELETE
。MySQL 8.0.12 より前:
SELECT
only.
スタンドアロンステートメントおよびプリペアドステートメントはリライトの対象となります。 ビュー定義またはストアドプログラム内で発生するステートメントは、書き換えの対象にはなりません。
Rewriter
プラグインは、rewrite_rules
という名前のテーブルを含むquery_rewrite
という名前のデータベースを使用します。 このテーブルは、ステートメントを書き換えるかどうかを決定するためにプラグインが使用するルールの永続ストレージを提供します。 ユーザーは、このテーブルに格納されているルールのセットを変更することによって、プラグインと通信します。 プラグインは、テーブル行のmessage
カラムを設定することによってユーザーと通信します。query_rewrite
データベースには、ルールテーブルの内容をプラグインにロードするflush_rewrite_rules()
というストアドプロシージャが含まれています。flush_rewrite_rules()
ストアドプロシージャでは、load_rewrite_rules()
という名前のユーザー定義関数が使用されます。Rewriter
プラグインは、実行時の操作情報を提供するプラグイン構成およびステータス変数を有効にするシステム変数を公開します。
次の各セクションでは、Rewriter
プラグインのインストールおよび使用方法について説明し、関連する要素のリファレンス情報を提供します。