Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  The Rewriter Query Rewrite Plugin

7.6.4 Rewriter 查询重写插件

MySQL 支持查询重写插件,可以在服务器执行 SQL 语句之前检查和可能修改 SQL 语句。请参阅 查询重写插件

MySQL 发行版包括一个名为 Rewriter 的后解析查询重写插件和相关脚本,以提供语句重写功能:

  • 服务器端插件 Rewriter 检查语句并可能重写它们,基于其内存中的重写规则缓存。

  • 以下语句可能被重写:SELECTINSERTREPLACEUPDATEDELETE

    独立语句和预备语句都可能被重写。在视图定义或存储程序中出现的语句不被重写。

  • 插件 Rewriter 使用一个名为 query_rewrite 的数据库,包含一个名为 rewrite_rules 的表。该表提供了持久存储的规则,以便插件决定是否重写语句。用户通过修改表中的规则与插件通信。插件通过设置表行的 message 列与用户通信。

  • 数据库 query_rewrite 包含一个名为 flush_rewrite_rules() 的存储过程,该过程将规则表的内容加载到插件中。

  • 一个名为 load_rewrite_rules() 的可加载函数由 flush_rewrite_rules() 存储过程使用。

  • 插件 Rewriter 暴露了系统变量,以便配置插件和状态变量,以提供运行时操作信息。此插件还支持一个特权 (SKIP_QUERY_REWRITE),保护给定用户的查询不被重写。

以下部分描述了如何安装和使用 Rewriter 插件,以及提供了相关元素的参考信息。