我正在创建一个数据库,其中一个字段需要从1自动递增。该字段将用于序列号。我应该使用“串行”数据类型,即我使用bigint(20)无符号?
答案 0 :(得分:1)
嗯,这取决于,但可能不是。大多数企业都希望对他们使用的序列号进行一些计算。这通常意味着他们需要一个没有间隙的可审计序列。数据库管理系统生成的自动序列不能保证没有间隙。
处理此问题的规范方法是创建一个序列号表(或者,根据应用程序,只显示更复杂序列号的连续部分的表)。应用程序“获取”该表中的下一个可用序列号,并使用一些相关的可审计数据更新该表。像用户名和时间戳这样的东西很常见,但它实际上取决于应用程序。
您需要注意每秒食用数千个序列号的生产线。这么多的活动可能会使序列号表的争用成为一个问题。