我对并发控制有疑问,何时担心。我创建了一个PHP / MySQL站点(InnoDB)。我知道如何避免事务问题,但是有并发控制。
我的网站是一个电子商务,它保存用户插入的商品,以此为例。当用户向站点插入新项时,DB会将productId创建为主键(由DB自动递增),并存储通过表单提交的有关该产品的其他数据。我正在使用准备好的陈述。
我是否必须担心两个或更多用户是否在同一时间这样做?是否有可能同时提交两个或更多项目会弄乱不同行的数据?
为了能够插入产品,用户必须使用会话登录,如果这对问题很重要。
提前致谢Markus。
答案 0 :(得分:3)
除非他们写入完全相同的行,否则我不明白为什么你会遇到任何并发问题。即使他们写入同一行,InnoDB也有行级锁定,这意味着一行将被锁定,直到用户完成写入,让后续用户“等待它” “直到锁定被释放。关于“冲突INSERT查询”的可能性:如果要将新数据插入到使用自动递增主键的表中,则每次都可以保证获得唯一ID,这意味着并发永远不应该是INSERT的一个问题。
答案 1 :(得分:2)
您可以执行快速表锁定,尤其适用于更新