MySQL 8.3 Release Notes
MySQL 支持查询重写插件,可以在服务器执行 SQL 语句之前检查和可能修改 SQL 语句。请参阅 查询重写插件。
MySQL 发行版包括一个名为 Rewriter 的后解析查询重写插件和相关脚本,以提供语句重写功能:
-
服务器端插件
Rewriter检查语句并可能重写它们,基于其内存中的重写规则缓存。 -
以下语句可能被重写:
SELECT、INSERT、REPLACE、UPDATE和DELETE。独立语句和预备语句都可能被重写。在视图定义或存储程序中出现的语句不被重写。
-
插件
Rewriter使用一个名为query_rewrite的数据库,包含一个名为rewrite_rules的表。该表提供了持久存储的规则,以便插件决定是否重写语句。用户通过修改表中的规则与插件通信。插件通过设置表行的message列与用户通信。 -
数据库
query_rewrite包含一个名为flush_rewrite_rules()的存储过程,该过程将规则表的内容加载到插件中。 -
一个名为
load_rewrite_rules()的可加载函数由flush_rewrite_rules()存储过程使用。 -
插件
Rewriter暴露了系统变量,以便配置插件和状态变量,以提供运行时操作信息。此插件还支持一个特权 (SKIP_QUERY_REWRITE),保护给定用户的查询不被重写。
以下部分描述了如何安装和使用 Rewriter 插件,以及提供了相关元素的参考信息。