暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

5.6.4.3重写器查询重写插件参考

原创 由迪 2020-08-25
843

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

  • 数据库中 的Rewriter规则表 query_rewrite
  • Rewriter 程序和功能
  • Rewriter 系统和状态变量
5.6.4.3.1重写器查询重写插件规则表

数据库中 的rewrite_rulesquery_rewriteRewriter 插件用来决定是否重写语句的规则提供持久性存储。

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

注意

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

rewrite_rules表包含以下列:

  • id

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

  • pattern

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

  • pattern_database

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

  • replacement

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

  • enabled

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

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

  • message

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

    • 模式或替换是产生语法错误的错误SQL语句。
    • 替换包含的? 参数标记多于模式。

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

  • pattern_digest

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

  • normalized_pattern

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

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

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

  • flush_rewrite_rules()

    此存储过程使用 load_rewrite_rules()UDF将rewrite_rules 表的内容加载到Rewriter内存中的高速缓存中。

    调用flush_rewrite_rules()意味着 COMMIT

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

  • load_rewrite_rules()

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

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

Rewriter查询重写插件支持以下系统变量。只有安装了插件,这些变量才可用(请参见 第5.6.4.1节“安装或卸载重写器查询重写插件”)。

  • rewriter_enabled

    系统变量 rewriter_enabled
    范围 全局
    动态
    SET_VAR 提示适用 没有
    类型 布尔型
    默认值 ON

    无论是Rewriter查询重写插件启用。

  • rewriter_verbose

    系统变量 rewriter_verbose
    范围 全局
    动态
    SET_VAR 提示适用 没有
    类型 整数

    供内部使用。

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

Rewriter查询重写插件支持以下状态变量。只有安装了插件,这些变量才可用(请参见 第5.6.4.1节“安装或卸载重写器查询重写插件”)。

  • Rewriter_number_loaded_rules

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

  • Rewriter_number_reloads

    的次数的rewrite_rules 表已经被加载到由所使用的内存中缓存 Rewriter插件。

  • Rewriter_number_rewritten_queries

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

  • Rewriter_reload_error

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论