MyCat配置文件详解(二),面试阿里

如果设置为true时 , 如果我们执行的语句为 "select * from ITCAST.TB_TEST;" , 则
MyCat会自动把schema字符去掉, 把SQL语句修改为 "select * from TB_TEST;" 可以避免SQL发送到后端数据库执行时, 报table不存在的异常 。
不过当我们在编写SQL语句时, 指定了一个不存在schema, MyCat是不会帮我们自动去除的 ,这个时候数据库就会报错, 所以在编写SQL语句时,最好不要加逻辑库的库名, 直接查询表即可。
3. sqlMaxLimit
当该属性设置为某个数值时,每次执行的SQL语句如果没有加上limit语句, MyCat也会自动在limit语句后面加上对应的数值 。也就是说, 如果设置了该值为100,则执行 select * from TB_TESTselect * from TB_TEST limit 100 是相同的效果 。
所以在正常的使用中, 建立设置该值 , 这样就可以避免每次有过多的数据返回。

2.子标签table

table 标签 定义了MyCat中逻辑库schema下的逻辑表 , 所有需要拆分的表都需要在table标签中定义 。

<table name="TB_TEST" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />

属性如下 :
MyCat配置文件详解(二),面试阿里

  1. name
    定义逻辑表的表名 , 在该逻辑库下必须唯一。

  2. dataNode
    定义的逻辑表所属的dataNode , 该属性需要与dataNode标签中的name属性的值对应。 如果一张表拆分的数据,存储在多个数据节点上,多个节点的名称使用","分隔 。
    MyCat配置文件详解(二),面试阿里

  3. rule
    该属性用于指定逻辑表的分片规则的名字, 规则的名字是在rule.xml文件中定义的, 必须与tableRule标签name属性对应。
    MyCat配置文件详解(二),面试阿里

  4. ruleRequired
    该属性用于指定表是否绑定分片规则, 如果配置为true, 但是没有具体的rule, 程序会报错。

  5. primaryKey
    逻辑表对应真实表的主键
    如: 分片规则是使用主键进行分片, 使用主键进行查询时, 就会发送查询语句到配置的所有的datanode上; 如果使用该属性配置真实表的主键, 那么MyCat会缓存主键与具体datanode的信息,再次使用主键查询就不会进行广播式查询了, 而是直接将SQL发送给具体的datanode

  6. type
    该属性定义了逻辑表的类型,目前逻辑表只有全局表普通表
    全局表:type的值是 global , 代表 全局表
    普通表:无

  7. autoIncrement
    mysql对非自增长主键,使用last_insert_id() 是不会返回结果的,只会返回0。所以,只有定义了自增长主键的表,才可以用last_insert_id()返回主键值。 mycat提供了自增长主键功能,但是对应的mysql节点上数据表,没有auto_increment,那么在mycat层调用last_insert_id()也是不会返回结果的。
    如果使用这个功能, 则最好配合数据库模式的全局序列。使用 autoIncrement="true" 指定该表使用自增长主键,这样MyCat才不会抛出 "分片键找不到" 的异常。 autoIncrement 的默认值为false。

  8. needAddLimit
    指定表是否需要自动在每个语句的后面加上limit限制, 默认为true


参考资料:《开源数据库中间件MyCat实战笔记》
快速入手通道:发送简信“MyCat资料”免费获取

二、dataNode 标签

<dataNode name="dn1" dataHost="host1" database="db1" />

dataNode标签中定义了MyCat中的数据节点, 也就是我们通常说的数据分片。一个dataNode标签就是一个独立的数据分片

具体的属性 :

属性 含义 描述
name 数据节点的名称 需要唯一 ; 在table标签中会引用这个名字, 标识表与分片的对应关系
dataHost 数据库实例主机名称 引用自 dataHost 标签中name属性
database 定义分片所属的数据库

三、dataHost 标签

<dataHost name="host1" maxCon="1000" minCon="10" balance="0" 
		writeType="0" dbType="mysql" dbDriver="native" switchType="1" 
slaveThreshold="100"> 
	<heartbeat>select user()</heartbeat> 
	<writeHost host="hostM1" url="192.168.192.147:3306" user="root" password="itcast"></writeHost> 
</dataHost>

该标签在MyCat逻辑库中作为底层标签存在, 直接定义了具体的数据库实例读写分离心跳语句

1.属性

属性 含义 描述

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们:

目录:

MyCat配置文件详解(二),面试阿里

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

MyCat配置文件详解(二),面试阿里

Java面试核心知识点

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

上一篇:分布式ID - Snowflake算法


下一篇:快速学习-Mycat的分片join