数据库控制功能可以阻止多个用户同时修改数据
1个回答
关注
展开全部
咨询记录 · 回答于2024-01-15
数据库控制功能可以阻止多个用户同时修改数据
数据库控制功能可以阻止多个用户同时修改数据
首先,我理解的多人同时进行修改即为并发修改,根据并发的不同层面可以分为:线程级,进程级,应用级,下面针对不同层面有不同的控制策略:
线程级:也就是我们平时所谓的多线程编程,最简单的方式就是使用synchronize关键字或者Lock类等进行悲观锁操作,这种方式对于资源冲突不明显的场景会让线程进行不必要的等待。所以如果冲突只是小概率事件,可以考虑使用juc包中的atomic类通过cas实现乐观锁;
进程级:这里的进程级指的是分布式部署下的多实例,这种场景的特点是运行的代码是一样的,所以遵循着同样的计算规则,一般采用外部中间件进行并发控制,可以考虑借用redis、zookeeper等中间件实现分布式锁;
应用级:所谓应用级就是完全不同的两个应用,这种情况分两种情况,一种是彼此事先约定锁的规则或使用公用的组件进行数据库访问,参考进程级;另一种情况则是通过数据库层来进行控制,包括使用for update进行行锁,以及通过update x set y =z where id=abc and y={修改前的值}(这时候其实是通过编程规范来约定)。