服务器卡顿导致数据库重复插入怎么解决?
代码因为业务问题就不放了,但是我可以和大家详细说一下代码逻辑
一个方法体{
….//方法的作用是进行数据库查询,检查用户状态并更新
….如果用户为未登记{
……..//一列的业务操作
….}else 如果用户已经登记{
……..//跳出方法,返回信息:用户已经登记,无需再次进行,
….}
….开启事务{
……..进行一系列的操作,并更新用户状态为已经登记
….}
}
现在出现了一个问题,这个问题我尝试了很多次都无法重复,那就是当两个人同时对一个用户进行登记时,按正常流程,第一个脚本执行完后,第二个脚本就会被返回已登记,但是,可能正好是服务器卡了,导致第一个人的脚本未执行到更新用户状态的那一步,第二个脚本就已经执行过了用户状态判断的那一步,导致两个脚本都判断用户为登记,两个脚本最终都执行成功了
所以这个问题要怎么解决,用数据锁吗,如果用锁的话,会对性能造成较大影响吗?
update的时候增加一个where条件,比如说
updated_at
,不一致不让更新,提示说有人修改过,刷新页面重新编辑status
状态,状态被修改过或者不符合条件不让更新等等,根据实际业务