2012-11-15 28 views
2

我有一个关于并发控制和什么时候担心的问题。我创建了一个PHP/MySQL网站(InnoDB)。我知道如何避免事务问题,但接下来是并发控制。何时担心并发控制PHP mysql

我的网站是一个电子商务,它持有用户插入商品,以此为例。当用户将新项目插入到站点时,数据库创建一个productId作为主键(由数据库自动递增),并存储有关通过表单提交的产品的其他数据。我正在使用准备好的语句。

我是否必须担心两个或多个用户是否在同一时间完成此操作?是否有机会同时提交两个或更多项目会混淆不同行的数据?

为了能够插入产品,用户必须使用会话进行登录才能解决问题。

在此先感谢,马库斯。

+3

没有。无论有多少个并行插入正在执行,auto_increment id都保证是唯一的。在回滚的交易中创建的ID也不会被重复使用。 –

+0

啊哈,很高兴知道。谢谢你的答案。 – Markus

回答

3

除非它们写入完全相同的行,否则我不明白为什么会有任何并发​​问题。即使他们正在写入同一行,InnoDB也会锁定行级别,这意味着一行将被锁定,直到用户完成写入操作为止,并让后续用户“等待它”直到锁定已经发布。关于“冲突的INSERT查询”的可能性:如果您要将新数据插入到使用自动递增主键的表中,那么您每次都可以获得唯一的ID,这意味着并发应该永远不会成为INSERT的一个问题。

+0

我明白了,谢谢你的回答。 – Markus

2

你可以做更快的表锁定特别有用的更新