table标签
table标签定义了Mycat中的逻辑表,所有需要拆分的表都需要在这个标签中定义。
<table name="subscription" primaryKey="id" autoIncrement="true" subTables="subscription,subscription$2-3" dataNode="node1" rule="auto-sharding-long-sub" />
table标签的相关属性:
属性名 | 值 | 数量限制 | 描述 |
---|---|---|---|
name | String | (1) | 逻辑表名称 |
dataNode | String | (1..*) | 逻辑表所属的dataNode节点,若定义节点过多dataNode="tablename$0-99,tablename2$100-199" |
rule | String | (0..1) | 分片规则引用 |
ruleRequired | boolean | (0..1) | 该属性用于指定表是否绑定分片规则,如果配置为 true,但没有配置具体 rule 的话 ,程序会报错 |
primaryKey | String | (1) | 逻辑表对应真实表的主键 |
type | String | (0..1) | 定义逻辑表的类型,全局表:global 普通表:则不指定 |
autoIncrement | boolean | (0..1) | 是否自增长主键功能 |
subTables | String | (1) | 一般使用在单库分表中,使用方式添加 subTables=“t_order$1-2,t_order3”。1.6版本后开始支持 |
needAddLimit | boolean | (0..1) | 设置分页大小 |
childTable标签
childTable标签用于定义E-R分片的子表,通过标签上的属性与父表进行关联。
<table name="t_order" primaryKey="id" dataNode="node1,node2,node3" rule="mod-long"> <!--ER关系表可进行相应表关联 采用取模分片-->
<childTable name="t_order_detail" primaryKey="id" joinKey="order_id" parentKey="id"/>
</table>
其标签相关属性
属性名 | 值 | 数量限制 | 描述 |
---|---|---|---|
name | String | (1) | 子表名称 |
joinKey | String | (1) | 插入子表的时候会使用这个列的值查找父表存储的数据节点。 |
parentKey | String | (1) | 与父表建立关联关系的列名 |
primaryKey | String | (0..1) | 子表主键字段名称 |
needAddLimit | boolean | (0..1) | 设置分页大小 |