一尘不染

MySQL多行插入是否可以获取顺序的自动增量ID?

mysql

我认为这是对的,但我在网上找不到任何可确认的信息。我可以使用last_insert_id()获取为autoincrement字段生成的第一个ID,但是我可以假定下一条记录将具有顺序ID吗?还是其他用户可以获取一个ID,以使生成的ID不连续?

示例:将值(1,2),(3,4),(5,6),…,(10000,10001)插入mytable(asdf,qwer);

如果mytable有一个autoincrement列,并且如果两个用户同时运行此语句,一个用户将获取10000个顺序ID,另一个用户将获取下一个10000个顺序ID?几百个用户呢?

谢谢。


阅读 217

收藏
2020-05-17

共1个答案

一尘不染

这取决于使用的存储引擎。

  • MyISAM 保证插入的行具有顺序ID,因为在插入过程中会保持表级锁定。
  • InnoDB :除非innodb_autoinc_lock_mode设置为 interleaved(2) ,否则插入的行将具有顺序ID。默认情况下,InnoDB consecutive从5.1和更低版本开始运行traditional

有关该innodb_autoinc_lock_mode选项的更多信息,请参见13.6.4.3。InnoDB中的AUTO_INCREMENT处理

2020-05-17