MySQL auto_increment innodb_autoinc_lock_mode = 2 但有时仍按顺序填充
MySQL auto_increment innodb_autoinc_lock_mode = 2 but still populating in sequence sometimes
我有 MySQL my.cnf 文件设置 innodb_autoinc_lock_mode = 2 但查看 table,主键有时不遵循该规则。
我主要有:
710
712
714
716
718
等...
这很好。
但在一些记录中我有:
720
722
723
724
725
726
728
730
等...
应该始终遵循增加 2 还是更多的建议?
我们有集群环境,所以他设置了增量2。
试图避免可能的键冲突。
我们需要遵循一些发票开具准则,并证明发票编号顺序没有间断。
这导致序列出现问题,因为我们使用主键 ID 作为发票编号。
在集群环境中设置 innodb_autoinc_lock_mode = 1
是个坏主意吗?
寻找有关如何实现无缝发票编号的最佳建议。
你对 AUTO_INCREMENT
的要求过高。它保证了唯一的编号。时期;句号。
auto_increment_increment
大于 1 是 "Master-Master" 复制首次使用的防止重复的技术。后来各种 "cluster" 解决方案采用了相同的策略。因为它有效。
我注意到您的列表中偶尔出现奇数。一位大师在做偶数,另一位大师在做奇数,但插入频率较低。任何避免间隙的尝试都会显着 减慢处理速度。对于99.9%的用户来说,这比担心差距更重要
我不是通过讲课。有几种会出现差距的情况。显然,一个 DELETE
会留下一个缺口。但这些 有时 会留下新的空白:INSERT IGNORE
、IODKU、REPLACE
、ROLLBACK
。同样,您不能相信这些值会单调递增。
innodb_autoinc_lock_mode
在某些情况下可能有帮助,但在其他情况下可能没有帮助。它是在开发人员发现一种稍微更快的 AI 方法时添加的,但同样以价值的可预测性为代价。
好的,您想要连续的 发票编号 ,它们永远不会被删除,等等。您最好的选择是 'service' (API)获取 "next" 发票编号。想一想具有一行一列的 table。并编写一个存储过程来递增该数字并将其 returns 发送给客户端。然后客户在需要发票编号的任何地方使用该编号。
您可以根据请求发票编号的时间使编号连续。根据插入发票的时间,可能很难使它们连续。作为一个 "invoice",你可能永远都应该删除它们,而是使用某种 "deleted" 标志来处理错误、取消等。
我有 MySQL my.cnf 文件设置 innodb_autoinc_lock_mode = 2 但查看 table,主键有时不遵循该规则。 我主要有:
710
712
714
716
718
等... 这很好。
但在一些记录中我有:
720
722
723
724
725
726
728
730
等...
应该始终遵循增加 2 还是更多的建议?
我们有集群环境,所以他设置了增量2。 试图避免可能的键冲突。
我们需要遵循一些发票开具准则,并证明发票编号顺序没有间断。 这导致序列出现问题,因为我们使用主键 ID 作为发票编号。
在集群环境中设置 innodb_autoinc_lock_mode = 1
是个坏主意吗?
寻找有关如何实现无缝发票编号的最佳建议。
你对 AUTO_INCREMENT
的要求过高。它保证了唯一的编号。时期;句号。
auto_increment_increment
大于 1 是 "Master-Master" 复制首次使用的防止重复的技术。后来各种 "cluster" 解决方案采用了相同的策略。因为它有效。
我注意到您的列表中偶尔出现奇数。一位大师在做偶数,另一位大师在做奇数,但插入频率较低。任何避免间隙的尝试都会显着 减慢处理速度。对于99.9%的用户来说,这比担心差距更重要
我不是通过讲课。有几种会出现差距的情况。显然,一个 DELETE
会留下一个缺口。但这些 有时 会留下新的空白:INSERT IGNORE
、IODKU、REPLACE
、ROLLBACK
。同样,您不能相信这些值会单调递增。
innodb_autoinc_lock_mode
在某些情况下可能有帮助,但在其他情况下可能没有帮助。它是在开发人员发现一种稍微更快的 AI 方法时添加的,但同样以价值的可预测性为代价。
好的,您想要连续的 发票编号 ,它们永远不会被删除,等等。您最好的选择是 'service' (API)获取 "next" 发票编号。想一想具有一行一列的 table。并编写一个存储过程来递增该数字并将其 returns 发送给客户端。然后客户在需要发票编号的任何地方使用该编号。
您可以根据请求发票编号的时间使编号连续。根据插入发票的时间,可能很难使它们连续。作为一个 "invoice",你可能永远都应该删除它们,而是使用某种 "deleted" 标志来处理错误、取消等。