5.5.4 Rewriter Query Rewrite 插件

MySQL 支持查询重写插件,该插件可以在服务器执行 SQL 语句之前检查并可能修改服务器收到的 SQL 语句。参见查询重写插件

MySQL 发行版包括名为Rewriter的后解析查询重写插件和用于安装插件及其相关组件的脚本。这些组件共同提供SELECT重写功能:

  • 一个名为Rewriter的服务器端插件将检查SELECT语句,并根据其在内存中的重写规则缓存来对其进行重写。准备好的语句中的独立SELECT语句和SELECT语句可以重写。视图定义或存储的程序中出现的SELECT语句无需重写。

  • Rewriter插件使用名为query_rewrite的数据库,其中包含名为rewrite_rules的 table。该 table 为插件用来决定是否重写语句的规则提供了持久性存储。用户通过修改存储在此 table 中的规则集来与插件进行通信。该插件通过设置 table 行的message列与用户通信。

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

  • flush_rewrite_rules()存储过程使用了一个名为load_rewrite_rules()的用户定义函数。

  • Rewriter插件公开了启用插件配置的系统变量和提供运行时操作信息的状态变量。

以下各节描述了如何安装和使用Rewriter插件,并提供了其相关组件的参考信息。