18910140161

说一下乐观锁和悲观锁?,laravel乐观锁和悲观锁

顺晟科技

2023-02-26 09:40:36

39

一:乐观锁

在laravel中,乐观锁大多是基于数据版本记录机制实现的。什么是数据版本?即,向数据添加版本标识符通常是通过在基于数据库表的版本解决方案中向数据库表添加“版本”字段来实现的。

在读取数据的时候,一起读取这个版本号,然后在更新的时候在这个版本号上加一。此时,将提交数据的版本数据与数据库表中相应记录的当前版本信息进行比较。如果提交数据的版本号大于数据库表的当前版本号,则更新,否则视为过期数据。

二:悲观锁

laravel中的查询构造函数包含一些可以帮助您在select语法中实现“悲观锁定”的函数。如果希望在查询中实现“sharedLock ”,可以使用Shared Lock方法。在提交事务之前,共享锁可防止选定的数据列被篡改:

DB:table(' users ')-where(' votes '''100)-shared lock()-get();上述查询等效于以下SQL语句:

select * from ` users ` where ` votes ` 100 '锁定共享模式;此外,您可以使用lockForUpdate方法。“for update”锁防止所选行被其他共享锁修改或删除:

DB:table(' users ')-where(' votes '''100)-lockForUpdate()-get();上述查询等效于以下SQL语句:

select * from ` users ` where ` votes ` 100 ' for update;

  • TAG:
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航