多线程之乐观悲观锁

乐观锁:认为数据修改产生冲突的概率并不大,所以不会先获取锁,一般都是使用版本号或者时间戳来标记,若A和B同时修改数据,当A修改完毕的同时将时间戳也替换为自己修改的时间戳,则B去修改时就会发现此条数据已经被修改过,则此次B则无法修改

  优点:不对数据加锁,只有在对数据进行修改操作时才会进行校验不会影响服务器性能,适用于查询较多的业务场景

  确定:因为是用过人为去操控的,如果有其余非人为操控的事物混入则可能会发生一些错误

悲观锁:认为数据经常性的出现变动,会在修改前获取锁,使用其余事物从而不能修改数据

  优点:悲观锁利用数据库中的锁机制来实现数据变化的顺序执行,锁定指定的数据行,适用于修改较为频繁的应用场景

  缺点是:一旦加锁以后,其他事物不能对加锁数据进行除查询以外的所有操作,如果当前事物执行周期较长,其他事物就会一直等待,影响性能。

猜你喜欢

转载自www.cnblogs.com/huayuxiaoxiang/p/11232478.html