对象关联的这些元素的引用如下重写
查询重写插件:
的
重写
规则表query_rewrite
数据库重写
程序和功能重写
系统和状态变量
的rewrite_rules
表中query_rewrite
数据库为规则提供持久存储重写
插件用于决定是否重写语句。
用户通过修改存储在该表中的规则集来与插件通信。该插件通过设置表来向用户传递信息消息
列。
属性将规则表加载到插件中flush_rewrite_rules
存储过程。除非在最近的表修改后调用该过程,否则表内容不一定对应插件使用的规则集。
的rewrite_rules
Table有以下列:
id
规则ID。这一列是表的主键。您可以使用该ID惟一地标识任何规则。
模式
表示规则匹配的语句模式的模板。使用
?
表示与数据值匹配的参数标记。pattern_database
用于匹配语句中未限定的表名的数据库。如果对应的数据库和表名相同,语句中的限定表名与模式中的限定表名匹配。只有当默认数据库相同时,语句中的非限定表名才会与模式中的非限定表名匹配
pattern_database
表名是相同的。替代品
指定如何重写匹配的语句的模板
模式
列值。使用?
表示与数据值匹配的参数标记。在重写的语句中,插件替换?
参数标记在替代品
中相应标记匹配的数据值模式
.启用
规则是否启用。控件加载操作(通过调用
flush_rewrite_rules ()
存储过程)将规则从表加载到重写
仅当此列为内存缓存时是的
.此列使禁用规则而不删除它成为可能:将列设置为
是的
并将表重新加载到插件中。消息
插件使用本专栏与用户进行通信。如果规则表加载到内存中没有错误发生,插件设置
消息
列零
.一个非零
值表示错误,列内容是错误消息。错误可能在以下情况下发生:模式或替换是一个不正确的SQL语句,可以生成语法错误。
替换品包含更多内容
?
参数标记比模式。
如果发生加载错误,插件还设置
Rewriter_reload_error
状态变量上
.pattern_digest
本列用于调试和诊断。如果当规则表被加载到内存中时,列存在,插件就会用模式摘要更新它。如果您试图确定为什么某些语句无法重写,那么本专栏可能会很有用。
normalized_pattern
本列用于调试和诊断。如果在规则表加载到内存中时列存在,插件将使用模式的规范化形式更新它。如果您试图确定为什么某些语句无法重写,那么本专栏可能会很有用。
重写
插件操作使用一个将规则表加载到其内存缓存中的存储过程和一个辅助可加载函数。在正常操作下,用户只调用存储过程。该函数旨在由存储过程调用,而不是由用户直接调用。
flush_rewrite_rules ()
此存储过程使用
load_rewrite_rules ()
控件的内容rewrite_rules
表到重写
内存缓存。调用
flush_rewrite_rules ()
意味着犯罪
.在修改规则表之后调用此过程,以使插件从新的表内容更新其缓存。如果发生任何错误,插件设置
消息
列表中适当规则行的列并设置Rewriter_reload_error
状态变量上
.控件使用的辅助例程
flush_rewrite_rules ()
存储过程。
的重写
查询重写插件支持以下系统变量。这些变量只有在插件安装时才可用(参见第5.6.4.1节“安装或卸载重写查询重写插件”).
-
系统变量 rewriter_enabled
范围 全球 动态的 是的 SET_VAR
提示应用不 类型 布尔 默认值 上
是否
重写
查询重写插件已启用。 -
系统变量 Rewriter_verbose.
范围 全球 动态的 是的 SET_VAR
提示应用不 类型 整数 供内部使用。
的重写
查询重写插件支持以下状态变量。这些变量只有在插件安装时才可用(参见第5.6.4.1节“安装或卸载重写查询重写插件”).
重写插件中重写规则成功加载的次数
rewrite_rules
表格进入内存重写
插件。次数
rewrite_rules
表已加载到重写
插件。Rewriter_number_rewritten_queries
控件重写的查询的数量
重写
查询重写插件,因为它被加载。是否发生错误是最近的时间
rewrite_rules
表已加载到内存中缓存中重写
插件。如果值为从
,没有错误发生。如果值为上
,发生错误;检查消息
列的rewriter_rules
错误消息表。