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
插件,以及提供了相关元素的参考信息。