Php MySQL并发多行插入-插入ID假设

Php MySQL并发多行插入-插入ID假设,php,mysql,auto-increment,Php,Mysql,Auto Increment,在我的应用程序中,我有很多外键依赖项,并且经常插入大量行。到目前为止,我所做的是一次运行一个insert,并记录insert ID。当插入大量行时,这往往需要很长时间,即使apache和mysql在同一台服务器上运行 我的问题是,如果我要修改我的应用程序,用一个INSERT添加许多行,我是否能够严格地根据mysql连接返回的最后一个INSERT id来假定每一行的id?问题是偶尔会有一种情况,一次有多个人将大量信息放入数据库 根据我所能确定的,似乎可以安全地假设,当您插入500行时,您的插入ID

在我的应用程序中,我有很多外键依赖项,并且经常插入大量行。到目前为止,我所做的是一次运行一个insert,并记录insert ID。当插入大量行时,这往往需要很长时间,即使apache和mysql在同一台服务器上运行

我的问题是,如果我要修改我的应用程序,用一个INSERT添加许多行,我是否能够严格地根据mysql连接返回的最后一个INSERT id来假定每一行的id?问题是偶尔会有一种情况,一次有多个人将大量信息放入数据库

根据我所能确定的,似乎可以安全地假设,当您插入500行时,您的插入ID范围将从(lastInsertID)到(lastInsertID+499),而不管来自另一个连接的查询在完成所需的时间内是开始还是结束,但我想确保这是可以接受的安全做法

我主要运行InnoDB,但偶尔也会有MyISAM

谢谢大家


-Jer

mysql\u insert\u id和现在推荐的替代方法返回上次运行的查询的受影响表的AUTO\u INCREMENT列中的第一个条目id

Mysql分组INSERT语句从第一个条目自动增量索引迭代插入。因此,可以安全地假设从单个INSERT语句插入的条目是连续的


委员会的评论“生成的ID在服务器中按每个连接进行维护。这意味着函数返回给给定客户机的值是为影响该客户机自动增量列的最新语句生成的第一个自动增量值。此值不受其他客户端的影响,即使它们生成自己的自动增量值。此行为确保每个客户端都可以检索自己的ID,而不必关心其他客户端的活动,也不需要锁或事务

太棒了。非常感谢。