【问题标题】:When to worry about Concurrency control PHP mysql什么时候担心并发控制 PHP mysql
【发布时间】:2012-11-15 17:48:22
【问题描述】:

我有一个关于并发控制以及何时需要担心的问题。我创建了一个 PHP/MySQL 站点(InnoDB)。我知道如何避免事务问题,但是还有并发控制。

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

我是否需要担心是否有两个或更多用户同时执行此操作?是否有可能同时提交两个或多个项目会弄乱不同行的数据?

如果这对问题很重要,用户必须使用会话登录才能插入产品。

提前致谢,马库斯。

【问题讨论】:

  • 没有。无论执行多少并行插入,auto_increment id 都保证是唯一的。在回滚的事务中创建的 id 也将永远不会被重用。
  • 啊哈,很高兴知道这一点。谢谢你的回答。

标签: php concurrency mysqli controls


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以进行快速表锁定,在更新时特别有用

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      相关资源
      最近更新 更多