5.5.4.3 Rewriter Query Rewrite 插件参考

以下讨论可作为与Rewriter查询重写插件相关联的这些组件的参考:

5.5.4.3.1 重写器查询重写插件规则 table

query_rewrite数据库中的rewrite_rulestable 为Rewriter插件用来决定是否重写语句的规则提供永久存储。

用户通过修改存储在此 table 中的规则集来与插件进行通信。该插件通过设置 table 的message列将信息传达给用户。

Note

规则 table 通过flush_rewrite_rules存储过程加载到插件中。除非在最近的 table 修改之后调用了该过程,否则 table 内容不一定与插件使用的规则集相对应。

rewrite_rulestable 具有以下列:

规则编号。此列是 table 的主键。您可以使用 ID 唯一地标识任何规则。

指示规则匹配的语句的模式的模板。使用?代 table 与数据值匹配的参数标记。

该数据库用于匹配语句中不合格的 table 名。如果相应的数据库名和 table 名相同,则语句中的合格 table 名与模式中的合格名匹配。仅当默认数据库与pattern_database相同且 table 名相同时,语句中不合格的 table 名才会与模式中的不合格名匹配。

指示如何重写与pattern列值匹配的语句的模板。使用?table 示与数据值匹配的参数标记。在重写的语句中,插件使用与pattern中的相应标记匹配的数据值替换replacement中的?参数标记。

是否启用规则。加载操作(通过调用flush_rewrite_rules()存储过程执行)仅在此列为YES时将规则从 table 中加载到Rewriter内存中高速缓存中。

通过此列,可以在不删除规则的情况下停用规则:将列设置为YES以外的值,然后将 table 重新加载到插件中。

插件使用此列与用户交流。如果将规则 table 加载到内存中时没有发生错误,则插件会将message列设置为NULL。非NULL值 table 示错误,并且列内容是错误消息。在以下情况下可能会发生错误:

如果发生加载错误,插件还将Rewriter_reload_error status 变量设置为ON

此列用于调试和诊断。如果在将规则 table 加载到内存时该列存在,则插件将使用模式摘要对其进行更新。如果您尝试确定为什么某些语句无法重写的情况,那么此列可能会很有用。

此列用于调试和诊断。如果在将规则 table 加载到内存时该列存在,则插件将使用模式的规范化形式对其进行更新。如果您尝试确定为什么某些语句无法重写的情况,那么此列可能会很有用。

5.5.4.3.2 重写器查询重写插件的过程和功能

Rewriter插件操作使用将规则 table 加载到其内存缓存中的存储过程,以及一个辅助用户定义函数(UDF)。在正常操作下,用户仅调用存储过程。 UDF 旨在由存储过程而不是由用户直接调用。

此存储过程使用load_rewrite_rules() UDF 将rewrite_rulestable 的内容加载到Rewriter内存缓存中。加载 table 后,它还会清除查询缓存。

呼叫flush_rewrite_rules()table 示COMMIT

修改 rulestable 以使插件从新 table 内容更新其缓存后,调用此过程。如果发生任何错误,该插件会为 table 中的相应规则行设置message列,并将Rewriter_reload_error status 变量设置为ON

此 UDF 是flush_rewrite_rules()存储过程使用的帮助程序。

5.5.4.3.3 重写器查询重写插件系统变量

Rewriter查询重写插件支持以下系统变量。这些变量仅在安装了插件的情况下可用(请参见第 5.5.4.1 节“安装或卸载重写器查询重写插件”)。

Property Value
System Variable rewriter_enabled
Scope Global
Dynamic Yes
Type Boolean
Default Value ON

是否启用了Rewriter查询重写插件。

Property Value
System Variable rewriter_verbose
Scope Global
Dynamic Yes
Type Integer

供内部使用。

5.5.4.3.4 重写器查询重写插件状态变量

Rewriter查询重写插件支持以下状态变量。这些变量仅在安装了插件的情况下可用(请参见第 5.5.4.1 节“安装或卸载重写器查询重写插件”)。

rewrite_rulestable 成功加载到内存中供Rewriter插件使用的重写插件重写规则的数量。

rewrite_rulestable 已被加载到Rewriter插件使用的内存缓存中的次数。

自加载Rewriter查询重写插件以来重写的查询数。

rewrite_rulestable 最近一次加载到Rewriter插件使用的内存缓存中时是否发生错误。如果值为OFF,则不会发生错误。如果值为ON,则发生错误;否则为 0.检查rewriter_rulestable 的message列中是否有错误消息。

首页