我一直在寻找MySQL/PHP/InnoDB
中表格并发问题的几种不同解决方案:
我真的希望进程2在开始自己的事务和SELECT
数据之前等待进程1提交,然后尝试插入UNIQUE INDEX
。因此,进程1锁定表,进程2检查锁,并等待WRITE lock
已经存在sleep()
...(我不能使用信号量)。
是吗? 1B。那简单吗? 1C。在INSERT
时,我还应该检查重复的条目吗?
此外,我是否需要检查此单WRITE lock
无处不在表格中有UPDATES
和/或INSERTS
,或者通过UPDATE/INSERT
等待自动处理?这只做了一次,所以如果是这样的话,让所有其他查询等待是唯一的最大缺点。
解决方案奖励的想法:在插入时检查重复键错误似乎更简单,如果为真,则重新SELECT
并重新计算新值并再次尝试直到DUPLICATE KEY
错误不再。