Mycat1.6系列全局序列号相关测试

全局序列号相关测试

 

mycat github上

https://github.com/MyCATApache/Mycat-Server

master分支进行全局序列号测试,经过测试,在多次版本更新后功能没有被损坏

 

https://github.com/MyCATApache/Mycat-Server

1.6.6-druid 分支进行本地文件方式的全局序列号测试

新版1.66-druid分支问题,因为更新druid版本1.10,因为mysql的语法是没有next value for mycatseq_xxxx这样的语法的,而sql server/ oracle是支持这种sql的..druid升级后,对MySQL的语法要求更为严格.考虑之后全局序列号这个功能统一使用函数调用的语法在mycat中表示.

SQLYOG上使用全局序列号的问题

1.6分支的全局序列号功能在sqlyog图形化客户端中的表现如下图

有警告提示,经过查看后端mysql的数据以及抓包分析,发现mysql中存有正确的插入结果,查看sqlyog的日志,发现sqlyog发送了带有explain的语句导致出现该警告

结论

可以忽略此警告

 

 

 

以下是使用数据库方式获取全局序列号通讯过程的一些抓包截图

Mycat发出获取数据库中全局序列号用到的SQL

数据库返回序列表中的当前id与步长

Mycat使用上述获得的id作为当前sql中插入语句所需的自增id组装成新的sql发送给数据

 

结论

本地文件方式,数据库方式, 本地时间戳方式, 分布式ZK ID生成器, Zk递增方式,这五种方式,其中数据库方式最为实用.本地文件方式因为存在当MyCAT重新发布后,配置文件中的sequence会恢复到初始值的瑕疵,并不实用.而本地时间戳方式, 分布式ZK ID生成器生成的id是64位二进制数,存在占用空间大,而且id本身掺杂一些其他的信息,导致使用该id作为分片主键存在一定的数据分布混乱的问题,可能需要获取数据之后进行排序.

 

Zk递增方式采用的是zookeeper作为全局id的方式进行递增,通讯开销大,性能较差,不建议使用.

 

分布式ZK ID生成器与Zk递增方式的区别是

 

分布式ZK ID生成器是在mycat启动的时候,连上zookeeper获取实例的id,并且读取本地的mycat集群配置信息,其后的id生成是在mycat实例本身内部处理的id递增

 

而Zk递增方式采用的是zookeeper作为全局id的方式进行递增,通讯开销大,性能较差,不建议使用.

 

数据库方式因为可以配置序列表在哪个节点上,而且把id递增的处理下放到了存储过程,较为实用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值