PDO :: lastInsertId对于非常快速的插入是可靠的吗?

问题描述:

我正在使用Yii PHP框架,它有一个函数PDO :: lastInsertId,显然这只是PDO :: lastInsertId的一个实现。如果我的应用程序可能有数以千计的并发用户进行非常快速的插入,那么这个函数是否可靠可以获得我刚刚插入的数据的自动递增行ID?PDO :: lastInsertId对于非常快速的插入是可靠的吗?

我需要获得插入本身后插入的行的ID,但要确保插入率非常高,它不会导致不一致的结果。

谢谢!

是的,当然,不用担心,但是你必须确保在插入查询之后询问lastInsertId。在此期间,不应该在该连接上执行其他查询,每个PHP进程都必须具有单独的连接。

此外,如果您认为表每秒会有数百或数千个插入,请考虑不要使用索引或使用最小数量的索引。如果MySQL支持MyISAM表。

+0

在插入查询后立即调用lastInsertId()调用,我的担心是关于其他并发用户。 PHP进程默认有单独的连接吗? (我猜在yii中最具体?)。谢谢你回到我身旁。 – csjohn

+4

>默认情况下,PHP进程是否有单独的连接?是。 – stivlo

+0

+1非常好的answear。也许暂时删除索引可能会提供更多的插入速度(我猜)。 – Melsi