mycat其他特性使用与使用此场景
load data 标准语句:
load DATA local INFILE 'd:\88\qq.txt' IGNORE INTO TABLE test CHARACTER SET 'gbk' FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'(id,sid,asf) ;
注意:导入时候必须加列枚举,而且是放在最后面。
配置默认节点:
<schema name="user" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" > ... </schema>
如上如果必须要分片的表只需要在schema里面配置默认节点,这样未配置的表都会走默认分片 dn1。
事务处理:
在用 spring 管理事务时候,特别是hibernate、jpa 这类框架,往往是有时候用@Transactional 这种声明注解,如果设置读写分离,会导致
都走了写节点,这时候要对read 操作不要配置事务,@Transactional (readonly=true) 也不行。
多个Mycat节点 负载:
在单个mycat压力大,从高可用或者负载角度来做多个mycat是正常的业务考虑,但是由于目前mycat(1.4及其之前)未做集群处理,可能如果单个
mycat做了主从切换,在多节点下可能会出现多写问题,即一个节点写主,另一个却写从,导致数据不一致问题,这时候需要注意主从的切换,建议
采用1.4的主从同步情况做切换,或者一个节点自动切换,另外节点手工切换,压力大一般部署(2-3个mycat即可)。
checkSQLschema="false" :
checkSQLschema 是将 sql中库过滤的例如:
select * from user.tuser t where ....;
默认为false 即不过滤,用默认逻辑库schema,如果应用跨schema操作,或者应用端加了database.table需要改成true,防止出现找不到表,因为,
默认库是发送后端。
联合主键与多分片维度:
联合主键不支持,强烈推荐用主键。
多分片字段拆分不支持。如果必须有,通过加一个冗余字段=多个字段 兼容。