你觉得自己这辈子都学不会编程?相信自己!超基础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,不然生成步长的规则可能会发生变化。