乐观锁
报错:乐观锁-error.optimistic_lock
场景:通过主键ID更新一条数据
解决方法:查出版本号写入更新对象
理解:当业务员A修改数据1时,version加1,同时业务员B修改数据1时,发现version加了1,和当前查询到的version不相等,重试更新操作直到成功。
乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量, 像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。
版本号机制:表中加上一个版本号version字段,version表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取version值,在提交更新时,若刚才读取到的version值为当前数据库中的version值相等时才更新,否则重试更新操作,直到更新成功。