sharding-jdbc1.5.1 事物方法中使用DefaultKeyGenerator生成的主键都是偶数
求助亮哥 @亮_dangdang ,使用的sharding-jdbc 1.5.1
我运行sharding-jdbc-example-mybatis中例子,发现生成的两条order的order_id都是偶数,于是写了新的方法再测试,发现生成的order_id都是偶数,而在非事物方法中运行DefaultKeyGenerator生成key的方法,发现生成的key奇数偶数都有,很奇怪的情况。
生成偶数order_id的代码截图如下:
配置文件
单独运行DefaultKeyGenerator,生成的Key奇偶数都有
Mapper相关配置
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
引用来自“亮_ShardingSphere”的评论
Sharding-JDBC采用snowflake算法作为默认的分布式分布式自增主键策略,用于保证分布式的情况下可以无中心化的生成不重复的自增序列。
因此自增主键可以保证递增,但无法保证连续。而snowflake算法的最后4位是在同一毫秒内的访问递增值。因此,如果毫秒内并发度不高,最后4位为零的几率则很大。因此并发度不高的应用生成偶数主键的几率会更高。
Sharding-JDBC采用snowflake算法作为默认的分布式分布式自增主键策略,用于保证分布式的情况下可以无中心化的生成不重复的自增序列。
因此自增主键可以保证递增,但无法保证连续。而snowflake算法的最后4位是在同一毫秒内的访问递增值。因此,如果毫秒内并发度不高,最后4位为零的几率则很大。因此并发度不高的应用生成偶数主键的几率会更高。