mybatis 使用注意点
mycat 我使用的分片算法是一致性hash ,指定一个字段为 main_id
发现:
1查询语句 条件 如果没有 main_id 会从多多个节点都进行搜索。
如果条件里包含main_id 会找到具体的分片节点。
2 <table name="file_data_lct_1" dataNode="dn1,dn2" primaryKey="id" rule="sharding-by-murmur" autoIncrement="true" needAddLimit="true"/>
由于我的schema.xml 中配置 primaryKey 属性,
所以查询语句中 如果条件里包含 id ,则 第一次查询会查询多个节点,
第二次 ,则会直接找到 具体的节点,也就是说 mycat 做了缓存。
3 对于主键id 自增的表 来说,
插入时候 ,保证多个分片id 不重复也是很重要的一点。
mybatis 不需要做什么,
<insert id="insertList" parameterType="java.util.ArrayList" > insert into `file_data_lct_1`( old_name, create_time )values <foreach item="item" index="index" collection="list" separator="," > ( #{item.oldName}, #{item.createTime} ) </foreach> </insert>只要这样就够了,
当然了mycat 需要为 表 file_data_lct_1 配置全局序列号。