10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册摘录

5.6.4.3重写查询重写插件参考

对象关联的这些元素的引用如下重写查询重写插件:

  • 重写规则表query_rewrite数据库

  • 重写程序和功能

  • 重写系统和状态变量

5.6.4.3.1 Rewriter查询重写插件规则表

rewrite_rules表中query_rewrite数据库为规则提供持久存储重写插件用于决定是否重写语句。

用户通过修改存储在该表中的规则集来与插件通信。该插件通过设置表来向用户传递信息消息列。

请注意

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

rewrite_rulesTable有以下列:

  • id

    规则ID。这一列是表的主键。您可以使用该ID惟一地标识任何规则。

  • 模式

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

  • pattern_database

    用于匹配语句中未限定的表名的数据库。如果对应的数据库和表名相同,语句中的限定表名与模式中的限定表名匹配。只有当默认数据库相同时,语句中的非限定表名才会与模式中的非限定表名匹配pattern_database表名是相同的。

  • 替代品

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

  • 启用

    规则是否启用。控件加载操作(通过调用flush_rewrite_rules ()存储过程)将规则从表加载到重写仅当此列为内存缓存时是的

    此列使禁用规则而不删除它成为可能:将列设置为是的并将表重新加载到插件中。

  • 消息

    插件使用本专栏与用户进行通信。如果规则表加载到内存中没有错误发生,插件设置消息.一个非值表示错误,列内容是错误消息。错误可能在以下情况下发生:

    • 模式或替换是一个不正确的SQL语句,可以生成语法错误。

    • 替换品包含更多内容参数标记比模式。

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

  • pattern_digest

    本列用于调试和诊断。如果当规则表被加载到内存中时,列存在,插件就会用模式摘要更新它。如果您试图确定为什么某些语句无法重写,那么本专栏可能会很有用。

  • normalized_pattern

    本列用于调试和诊断。如果在规则表加载到内存中时列存在,插件将使用模式的规范化形式更新它。如果您试图确定为什么某些语句无法重写,那么本专栏可能会很有用。

5.6.4.3.2重写查询重写插件的过程和函数

重写插件操作使用一个将规则表加载到其内存缓存中的存储过程和一个辅助可加载函数。在正常操作下,用户只调用存储过程。该函数旨在由存储过程调用,而不是由用户直接调用。

  • flush_rewrite_rules ()

    此存储过程使用load_rewrite_rules ()控件的内容rewrite_rules表到重写内存缓存。

    调用flush_rewrite_rules ()意味着犯罪

    在修改规则表之后调用此过程,以使插件从新的表内容更新其缓存。如果发生任何错误,插件设置消息列表中适当规则行的列并设置Rewriter_reload_error状态变量

  • load_rewrite_rules ()

    控件使用的辅助例程flush_rewrite_rules ()存储过程。

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

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

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

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

  • Rewriter_number_loaded_rules

    重写插件中重写规则成功加载的次数rewrite_rules表格进入内存重写插件。

  • Rewriter_number_reloads

    次数rewrite_rules表已加载到重写插件。

  • Rewriter_number_rewritten_queries

    控件重写的查询的数量重写查询重写插件,因为它被加载。

  • Rewriter_reload_error

    是否发生错误是最近的时间rewrite_rules表已加载到内存中缓存中重写插件。如果值为,没有错误发生。如果值为,发生错误;检查消息列的rewriter_rules错误消息表。