Mysql 自动增量列中的增量不稳定
Erratic increment in Mysql Auto increment column
我看到 MySql table 的 AUTO_INCREMENT
列具有异常大的值。
不知何故,我试图了解这种情况是如何发生的,以避免这种情况发生。
当前场景:
- 多个 table 位于每个
AUTO_INCREMENT
列中。所有人都有这个问题。
- 我经常跨 table 进行批量提交。这会是罪魁祸首吗?
- 同一个 mysql 服务器上有 2 个数据库。这会干扰吗?
我尝试阅读和理解 mysql auto_increment doc 并发现批量提交可能是个问题。但是我不确定 innodb_autoinc_lock_mode
我应该切换到什么?
值不稳定增量的快照。
所有 MySql 系统变量都是默认的且未更改。
真的有千差万别吗?
我在 "normalization" table 中看到过这样的情况,它使用 INSERT IGNORE
来添加条目或默默地不做任何事情。问题是 "doing nothing" 包括分配一个 auto_inc id,但没有使用它。
IODKU、ROLLBACK 和其他一些东西 "burn" ids。
http://mysql.rjweb.org/doc.php/staging_table讨论了一种非燃烧的高速标准化方法。
可能发生的另一件事...由于在 COMMIT
完成之前其他线程看不到该 ID,因此其他线程可能会看到间隙,然后稍后会看到丢失的 ID。这对于使用 MySQL 作为排队机制来说可能很烦人,而你是 "continuing where you left off".
我看到 MySql table 的 AUTO_INCREMENT
列具有异常大的值。
不知何故,我试图了解这种情况是如何发生的,以避免这种情况发生。
当前场景:
- 多个 table 位于每个
AUTO_INCREMENT
列中。所有人都有这个问题。 - 我经常跨 table 进行批量提交。这会是罪魁祸首吗?
- 同一个 mysql 服务器上有 2 个数据库。这会干扰吗?
我尝试阅读和理解 mysql auto_increment doc 并发现批量提交可能是个问题。但是我不确定 innodb_autoinc_lock_mode
我应该切换到什么?
值不稳定增量的快照。
所有 MySql 系统变量都是默认的且未更改。
真的有千差万别吗?
我在 "normalization" table 中看到过这样的情况,它使用 INSERT IGNORE
来添加条目或默默地不做任何事情。问题是 "doing nothing" 包括分配一个 auto_inc id,但没有使用它。
IODKU、ROLLBACK 和其他一些东西 "burn" ids。
http://mysql.rjweb.org/doc.php/staging_table讨论了一种非燃烧的高速标准化方法。
可能发生的另一件事...由于在 COMMIT
完成之前其他线程看不到该 ID,因此其他线程可能会看到间隙,然后稍后会看到丢失的 ID。这对于使用 MySQL 作为排队机制来说可能很烦人,而你是 "continuing where you left off".