Mycat中table标签详解

时间:2022-11-11 11:06:17
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) 设置分页大小