Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Rewriter Query Rewrite Plugin Reference

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

以下讨论作为重写器查询重写插件相关元素的参考:

  • 重写器规则表在query_rewrite数据库中

  • 重写器过程和函数

  • 重写器系统和状态变量

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

用户通过修改存储在该表中的规则集来与插件通信。插件通过将message列设置为非空值来与用户通信。

Note

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

rewrite_rules表具有以下列:

  • id

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

  • pattern

    表示语句匹配的模板。使用?表示参数标记符号,以匹配数据值。

  • pattern_database

    用于匹配未qualified表名的数据库。qualified表名在语句中匹配qualified名称在模式中,如果对应的数据库和表名相同。未qualified表名在语句中匹配未qualified名称在模式中,只有当默认数据库与pattern_database相同且表名相同时。

  • replacement

    表示如何重写语句的模板。使用?表示参数标记符号,以匹配数据值。在重写语句中,插件使用对应标记符号在模式中的数据值来替换?参数标记符号。

  • enabled

    是否启用规则。加载操作(由flush_rewrite_rules()存储过程执行)将规则从表中加载到重写器内存缓存中,只有当该列为YES时。

    该列使得可以禁用规则而不删除它:将该列设置为除YES以外的值,然后重新加载表到插件中。

  • message

    插件使用该列与用户通信。如果在加载规则表到内存时没有错误,插件将将message列设置为NULL。非NULL值表示错误,并且该列的内容是错误信息。错误可能出现在以下情况下:

    • 或者模式或替换语句都包含错误的SQL语句,导致语法错误。

    • 替换语句中包含的参数标记数量超过模式中的参数标记数量。

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

  • pattern_digest

    这个列用于调试和诊断。如果该列在规则表加载到内存时存在,插件将其更新为模式摘要。这列可能有助于确定某些语句无法被重写。

  • normalized_pattern

    这个列用于调试和诊断。如果该列在规则表加载到内存时存在,插件将其更新为模式的normalized形式。这列可能有助于确定某些语句无法被重写。

Rewriter插件操作使用一个存储过程来加载规则表到内存缓存中,并使用一个可加载函数。正常情况下,用户只调用存储过程。函数旨在由存储过程调用,而不是由用户直接调用。

  • flush_rewrite_rules()

    这个存储过程使用load_rewrite_rules()函数将规则表中的内容加载到Rewriter内存缓存中。

    调用flush_rewrite_rules()将隐式地调用COMMIT

    调用这个过程后,您可以将规则表的内容更新到插件的缓存中。如果发生错误,插件将在适当的规则行中设置message列,并将Rewriter_reload_error状态变量设置为ON

  • load_rewrite_rules()

    这个函数是flush_rewrite_rules()存储过程使用的帮助函数。

Rewriter查询重写插件支持以下系统变量。这些变量仅在插件安装时可用(见Section 7.6.4.1, “Installing or Uninstalling the Rewriter Query Rewrite Plugin”)。

查询重写插件支持以下状态变量。这些变量仅在插件安装时可用(见Section 7.6.4.1, “Installing or Uninstalling the Rewriter Query Rewrite Plugin”)。

  • Rewriter_number_loaded_rules

    查询重写插件加载的rewrite规则数量,从rewrite_rules表中加载到内存中,以供查询重写插件使用。

  • Rewriter_number_reloads

    查询重写插件加载rewrite_rules表的次数,以内存缓存为查询重写插件使用。

  • Rewriter_number_rewritten_queries

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

  • Rewriter_reload_error

    是否在最近一次加载rewrite_rules表格到Rewriter插件使用的内存缓存时发生错误。如果值为OFF,则没有错误发生。如果值为ON,则发生错误;请检查message列中的错误信息。