部分 SQL 还不能很好的支持
- 除了分片规则相同、 ER 分片、全局表、以及 SharedJoin,其他表之间的 Join 问题目前还没有很好的解决,需要自己编写 Catlet 来处理
- 不支持 Insert into 中不包括字段名的 SQL
- insert into x select from y 的 SQL,若 x 与 y 不是相同的分片规则,则不被支持,此时会涉及到跨分片转移
- 跨分片的事务,目前只是弱 XA 模式,还没完全实现 XA 模式
- 分片的 Table,目前不能执行 Lock Table 这样的语句,因为这种语句会随机发到某个节点,也不会全部分片锁定,经常导致死锁问题,此类问题常常出现在 sqldump 导入导出 SQL 数据的过程中。
- 目前 sql 解析器采用 Druid,再某些 sql 例如 order,group,sum ,count 条件下,如果这类操作会出现兼容问题,比如:
selectt.name as name1 from test order by t.name
- 这条语句 select 列的别名与 order by 不一致解析器会出现异常,所以在对列加别名时候要注意这类操作异常,特别是由 jpa 等类似的框架生成的语句会有兼容问题。
开发框架方面,虽然支持 Hibernat,但不建议使用 Hibernat,而是建议 Mybatis 以及直接 JDBC 操作,原因 Hibernat 无法控制 SQL 的生成,无法做到对查询 SQL 的优化,导致大数量下的性能问题。此外,事务方面,建议自己手动控制,查询语句尽量走自动提交事务模式,这样 Mycat 的读写分离会被用到,提升性能很明显。