sharding-jdbc1.5.1 事物方法中使用DefaultKeyGenerator生成的主键都是偶数

发布于 2022-01-04 16:09:20 字数 1229 浏览 805 评论 2

求助亮哥 @亮_dangdang  ,使用的sharding-jdbc 1.5.1 

我运行sharding-jdbc-example-mybatis中例子,发现生成的两条order的order_id都是偶数,于是写了新的方法再测试,发现生成的order_id都是偶数,而在非事物方法中运行DefaultKeyGenerator生成key的方法,发现生成的key奇数偶数都有,很奇怪的情况。

生成偶数order_id的代码截图如下:

配置文件

单独运行DefaultKeyGenerator,生成的Key奇偶数都有

Mapper相关配置

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

少女情怀诗 2022-01-06 07:04:18

引用来自“亮_ShardingSphere”的评论

Sharding-JDBC采用snowflake算法作为默认的分布式分布式自增主键策略,用于保证分布式的情况下可以无中心化的生成不重复的自增序列。

因此自增主键可以保证递增,但无法保证连续。而snowflake算法的最后4位是在同一毫秒内的访问递增值。因此,如果毫秒内并发度不高,最后4位为零的几率则很大。因此并发度不高的应用生成偶数主键的几率会更高。

无声静候 2022-01-06 02:59:04

Sharding-JDBC采用snowflake算法作为默认的分布式分布式自增主键策略,用于保证分布式的情况下可以无中心化的生成不重复的自增序列。

因此自增主键可以保证递增,但无法保证连续。而snowflake算法的最后4位是在同一毫秒内的访问递增值。因此,如果毫秒内并发度不高,最后4位为零的几率则很大。因此并发度不高的应用生成偶数主键的几率会更高。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文