laravel 供应了方便快捷的数据库事件运用体式格局,在运用中遇到过几个轻易殽杂和被误导的处所,这里做个纪录,愿望那里写的不对的处所列位大神指导一下类别:Laravel / 日期:2019-11-27 / 浏览:181 / 评论:0
laravel 事件分为手动体式格局和自动体式格局,但假如我们在运用 laravel 供应的 sharedLock 或许 lockForUpdate 锁表的体式格局,为了防止不必要的贫苦和毛病,发起最好运用手动提交事件来处置惩罚,如下图:
下面来说说 sharedLock (同享锁) 和 lockForUpdate (消极锁) 这两个在运用上的区分和影响
sharedLock (同享锁)
sharedLock 运用时等同于 SQL 语句 *select from transaction_test where type = 1 lock in share mode;**
在事件中运用 sharedLock 时才会见效,会把数据地点行举行锁定,此时被锁定的数据,不允许被其他操纵修正,然则被锁定的数据,对查询操纵没有影响,不管是一般查询照样事件中的查询操纵,都不会受到影响。被锁定的数据,晓得事件被提交或许回滚以后,才会开释.
lockForUpdate (消极锁)
lockForUpdate 运用时等同于 SQL 语句 *select from transaction_test where type = 1 for update;**
lockForUpdate 只要在事件中才会见效,运用 lockForUpdate 时数据地点行被锁定,现在其他事件中的锁表操纵会守候当前事件提交才会实行,然则关于非锁表和一般的查询操纵并没有限定,有影响的只是你在事件中一样实行的锁表操纵.
总之,不管是同享锁照样消极锁,受影响的只是事件中实行锁表的操纵,关于一般的查询操纵,和事件中的非锁表操纵没有影响,
同时须要注重的是,不管消极锁照样同享锁当 sql 语句涉及到索引 , 并用索引作为查询或推断的根据时,那末 mysql 会用行级锁锁定所要修正的行,不然会运用表锁锁住整张表,因此在运用时肯定要注重运用索引,不然会致使高的并发题目;
以上就是Laravel 事件中 运用 消极锁 小结的细致内容,更多请关注ki4网别的相干文章!