使用限制
网络协议
一般来说仅内网使用,没有实现加密通信协议,连通外网有安全问题
没有后端数据库之间的数据同步服务
目标是兼容MySQL7/8服务器,也一定程度兼容Mariadb,支持Mariadb客户端的批量插入特性
网络通信协议一定支持native_password验证,其他验证方式会自动切换到验证插件支持超过16mb的报文
不支持压缩协议
不支持加密协议通信
事务特性
支持强一致性(不跨库)分布式事务
支持保存点(savepoint,v1.21-2021-11-10)
支持多语句
数值类型
mycat2对于单分片sql没有限制,而对于跨实例的sql使用有符号类型处理,可以尝试在mycat中把建表语句的字段类型改成decimal避开这个问题
DDL语句
不支持修改拆分键
支持物理库的视图视为普通表来使用
仅普通表支持外键
DML语句
DELETE语句
UPDATE语句
SELECT语句
对于for update语句会把sql中出现的表都加锁。
具体是行锁还是表锁要看sql语句。
不支持SELECT INTO OUTFILE。
SET语句
支持SET SESSION级别的变量,但是不能被预处理语句引用变量,只有autocommit变量具有正确语义
不支持SET GLOBAL级别的变量
不支持SET USER级别的变量
SHOW语句
所有SHOW语句都视为兼容性SQL进行处理,发往prototype节点处理,所以不具备分布式语义
高级功能
不支持用户自定义数据类型(改代码), 自定义函数(改代码)
支持物理视图,但是不支持Mycat中的逻辑视图不支持存储过程(改代码)
有限支持存储过程
不支持游标
不支持触发器
函数计算问题
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP());
在mysql的结果
在mycat2的结果
在mycat2里面,函数计算是有先后的,结果与mysql有偏差