Schema.xml 作为 MyCat 中重要的配置文件之一,管理着 MyCat 的逻辑库、表、分片规则、DataNode 以 及 DataSource。弄懂这些配置,是正确使用 MyCat 的前提。这里就一层层对该文件进行解析。
childTable 标签
childTable 标签用于定义 E-R 分片的子表。通过标签上的属性与父表进行关联。
childTable 标签的相关属性:
属性名 | 值 | 数量限制 |
---|---|---|
name | String | (1) |
joinKey | String | (1) |
parentKey | String | (1) |
primaryKey | String | (0…1) |
needAddLimit | boolean | (0…1) |
1、name 属性
定义子表的表名。
2、joinKey 属性
插入子表的时候会使用这个列的值查找父表存储的数据节点。
3、parentKey 属性
属性指定的值一般为与父表建立关联关系的列名。程序首先获取 joinkey 的值,再通过 parentKey 属性指定 的列名产生查询语句,通过执行该语句得到父表存储在哪个分片上。从而确定子表存储的位置。
4、primaryKey 属性
该逻辑表对应真实表的主键,例如:分片的规则是使用非主键进行分片的,那么在使用主键查询的时候,就 会发送查询语句到所有配置的 DN 上,如果使用该属性配置真实表的主键。难么 MyCat 会缓存主键与具体 DN 的 信息,那么再次使用非主键进行查询的时候就不会进行广播式的查询,就会直接发送语句给具体的 DN,但是尽管 配置该属性,如果缓存并没有命中的话,还是会发送语句给具体的 DN,来获得数据。
5、needAddLimit 属性
指定表是否需要自动的在每个语句后面加上 limit 限制。由于使用了分库分表,数据量有时会特别巨大。这时 候执行查询语句,如果恰巧又忘记了加上数量限制的话。那么查询所有的数据出来,也够等上一小会儿的。
所以,mycat 就自动的为我们加上 LIMIT 100。当然,如果语句中有 limit,就不会在次添加了。
这个属性默认为 true,你也可以设置成 false`禁用掉默认行为。
来源:CSDN
作者:天狗的日常
链接:https://blog.csdn.net/qq_35118528/article/details/103473727