MySQL:将批量插入的auto_incremented行总是有相邻的ID吗?

时间:2013-10-21 11:04:43

标签: mysql

当2个查询同时开始并插入多行时,是否保证id会相邻?例如,查询1插入行a,b,c查询2 - 行c,d,e。查询1完成并报告insertId为1,它是否总是表示插入的行a包含id 1,b - 2,c - 3,或者a有可能是id为1,但c有id 2吗?

1 个答案:

答案 0 :(得分:0)

显然,InnoDB确实如此:

  

当访问自动增量计数器时,InnoDB使用特殊的   表级别的AUTO-INC锁定它保持在当前SQL的末尾   声明,而不是交易结束。特殊锁定释放   引入策略是为了提高插入到插件中的并发性   包含AUTO_INCREMENT列的表。不过,两个   事务不能在同一个表上具有AUTO-INC锁定   同时,如果AUTO-INC可能会对性能产生影响   锁定持有很长时间。声明可能就是这种情况   例如插入所有行的INSERT INTO t1 ... SELECT ... FROM t2   从一张桌子到另一张桌子。

http://dev.mysql.com/doc/refman/5.6/en/innodb-auto-increment-traditional.html

不确定myisam