你觉得自己这辈子都学不会编程?相信自己!超基础Python课程,90分钟快速入门【自学Python教程合集】_哔哩哔哩_bilibili
实现思路
利用数据库自增或者序列号方式实现订单号
注意:在数据库集群环境下,默认自增方式存在问题,因为都是从1开始自增,可能会存在重复,应该设置每台不同数据库自增的间隔方式不同。
优点:
简单,代码方便,性能可以接受。
数字ID天然排序,对分页或者需要排序的结果很有帮助。
缺点:
不同数据库语法和实现不同,数据库迁移的时候或多数据库版本支持的时候需要处理。
在性能达不到要求的情况下,比较难于扩展。
在单个数据库或读写分离或一主多从的情况下,只有一个主库可以生成。有单点故障的风险。
分表分库的时候会有麻烦。
在数据库集群环境下,默认自增方式存在问题,因为都是从1开始自增,可能会存在重复,应该设置每台节点自增步长不同。
查询自增的步长
SHOW VARIABLES LIKE 'auto_inc%'
修改自增的步长
SET @@auto_increment_increment=10;
修改起始值
SET @@auto_increment_offset=5;
假设有两台mysql数据库服务器
节点①自增 1 3 5 7 9 11 ….
节点②自增 2 4 6 8 10 12 ….
注意:
在最开始设置好了每台节点自增方式步长后,确定好了mysql集群数量后,无法扩展新的mysql,不然生成步长的规则可能会发生变化。
本文探讨了利用数据库自增特性实现全局ID的方法,包括实现思路、优点和缺点。在数据库集群环境中,为避免ID冲突,需设置各节点自增步长不同,例如节点①自增1,3,5...,节点②自增2,4,6...。然而,这种方式存在单点故障、不易扩展和分库分表等问题。"
123410104,11537609,C++实现神奇幻方构造算法,"['算法', 'C++', '数学问题', '编程挑战', '数据结构']
3143

被折叠的 条评论
为什么被折叠?



