什么时候用乐观锁比较好什么时候用悲观锁比较好

什么时候用乐观锁比较好什么时候用悲观锁比较好,第1张

1、悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系 统不会修改数据)。 2、乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证 *** 作最大程度的独占性。但随之而来的就是数据库性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。 而乐观锁机制在一定程度上解决了这个问题。乐观锁,大多是基于数据版本( Version )记录机制实现。何谓数据版本?即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个 “version” 字段来实现。读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一。此时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。

这是两个不同的概念。

1在表中增加version,是由你自己写的程序或者sql的where条件控制的,并没有真正的到达mysql的事务层。

2悲观锁是mysql自己维护的锁机制,你加不加version跟悲观锁没关系,而只跟你设置的事务级别有关系

乐观锁,悲观锁,这两个概念你需要搞清楚才能更好的理解。

乐观锁:与悲观锁相对应,不是数据库自带的,需要自己去实现。

悲观锁:与乐观锁相对应,是数据库自己实现了的。要用的时候,我们直接调用数据库的相关语句就可以了。

悲观锁又涉及到其他两个锁概念,共享锁和排他锁。只有去理解和实际 *** 作才能更好的理解这些具体的东西。

希望我的回答对你有所帮助

mysql锁分为共享锁和排他锁,也叫做读锁和写锁。

读锁是共享的,可以通过lock in share mode实现,这时候只能读不能写。

写锁是排他的,它会阻塞其他的写锁和读锁。从颗粒度来区分,可以分为表锁和⾏锁两种。

表锁会锁定整张表并且阻塞其他⽤户对该表的所有读写 *** 作,⽐如alter修改表结构的时候会锁表。

⾏锁⼜可以分为乐观锁和悲观锁,悲观锁可以通过for update实现,乐观锁则通过版本号实现。

以上就是关于什么时候用乐观锁比较好什么时候用悲观锁比较好全部的内容,包括:什么时候用乐观锁比较好什么时候用悲观锁比较好、mysql 使用乐观锁时,自带的悲观锁会失效么、mysql默认是乐观锁等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9305371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存