首页 其他

mysql中的乐观锁


mysql中的乐观锁

什么是乐观锁

乐观锁认为数据一般不会发生变化,因此不会加锁,但是在数据进行提交更新的时候会正式对数据的是否冲突进行检测,如果发现冲突了,则返回用户错误的信息。若数据没有变化,则进行更新。乐观锁适用于读多写少的场景

优缺点

优点

不会发生任何锁和死锁,可增加吞吐量,避免长事务中的数据库加锁开销

缺点

对于写入比较多的场景不适合,如果写操作越频繁的话,更新失败的几率就越大,上层逻辑进行retry的次数也会增多,从而降低了系统的性能。

实现方法

使用数据版本

给数据增加一个版本标识,一般是通过为数据库表增加一个数字类型的 “version” 字段来实现。当数据读取时候,将version字段一块取出来,数据每更新一次这个字段就加一。当我们进行更新的时候就拿自己取出来的version和数据库中的比较,如果一致就更新,否则就不更新。




文章评论

目录