如何选择合适的【多线程锁策略】?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4442个文字,预计阅读时间需要18分钟。
@TOC
一、常见的锁策略
1.悲观锁 VS 乐观锁
悲观锁:假设最坏的情况,每次访问数据时都认为别人会修改,所以每次在读取数据前都会上锁,直到事务结束才释放锁。 乐观锁:假设最好的情况,在读取数据时不会发生冲突,所以在读取数据时不上锁,只有在提交更新时才检查是否有冲突,如果有则失败重试。@TOC
一、常见的锁策略
1. 悲观锁 VS 乐观锁
悲观锁 :
总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别
人想拿这个数据就会阻塞直到它拿到锁。
预期锁冲突的概率很高
就是它认为,只要它一加锁,就会出现锁冲突。
乐观锁:
假设数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲
突进行检测,如果发现并发冲突了,则让返回用户错误的信息,让用户决定如何去做.
预期锁冲突的概率很低
就是说:它加锁没有那么容易就会出现锁冲突。
思考一个问题:
是悲观锁背后做的事情多,还是乐观锁背后做的事情多?
悲观锁的事情做得多
举例:
疫情期间,谁也不知道下一步疫情会不会更严重,疫情一旦严重,吃饭都成问题。可能会买不到菜! 悲观锁,就是在认为下一时刻就会出现这样的问题!为此,它去超市菜场买了大量的各种各样的生活用品 和 菜,屯在家里,以防不时之需。 乐观锁,就是认为在国家的管控下,疫情很难复发。为此它认为不需要屯那么多货。即使疫情真的复发,也不会支持太久,菜也应该是能买到,物资完全够用。
本文共计4442个文字,预计阅读时间需要18分钟。
@TOC
一、常见的锁策略
1.悲观锁 VS 乐观锁
悲观锁:假设最坏的情况,每次访问数据时都认为别人会修改,所以每次在读取数据前都会上锁,直到事务结束才释放锁。 乐观锁:假设最好的情况,在读取数据时不会发生冲突,所以在读取数据时不上锁,只有在提交更新时才检查是否有冲突,如果有则失败重试。@TOC
一、常见的锁策略
1. 悲观锁 VS 乐观锁
悲观锁 :
总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别
人想拿这个数据就会阻塞直到它拿到锁。
预期锁冲突的概率很高
就是它认为,只要它一加锁,就会出现锁冲突。
乐观锁:
假设数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲
突进行检测,如果发现并发冲突了,则让返回用户错误的信息,让用户决定如何去做.
预期锁冲突的概率很低
就是说:它加锁没有那么容易就会出现锁冲突。
思考一个问题:
是悲观锁背后做的事情多,还是乐观锁背后做的事情多?
悲观锁的事情做得多
举例:
疫情期间,谁也不知道下一步疫情会不会更严重,疫情一旦严重,吃饭都成问题。可能会买不到菜! 悲观锁,就是在认为下一时刻就会出现这样的问题!为此,它去超市菜场买了大量的各种各样的生活用品 和 菜,屯在家里,以防不时之需。 乐观锁,就是认为在国家的管控下,疫情很难复发。为此它认为不需要屯那么多货。即使疫情真的复发,也不会支持太久,菜也应该是能买到,物资完全够用。

