悲观锁与乐观锁的理解
时间: 2023-12-06 14:05:08 浏览: 138
悲观锁和乐观锁是人们定义的并发资源处理思想,不要与MySQL中的锁机制混淆。悲观锁是一种保守思想,它假设在并发环境中,操作会导致冲突和竞争,因此在对数据进行处理时,持悲观态度,认为其他线程会导致数据不一致或冲突,所以会通过加锁的方式来保证数据的一致性。悲观锁适用于写比较多的场景,但可能会导致系统开销增加和吞吐量下降。
乐观锁是一种乐观思想,它假设在并发环境中,操作不会导致冲突和竞争,因此在对数据进行处理时,持乐观态度,认为其他线程不会导致数据不一致或冲突,所以不会加锁,而是在更新数据时进行版本号或时间戳的校验,如果发现数据已被其他线程修改,则进行重试。乐观锁适用于读比较多、写比较少的场景,可以减少系统开销并提高吞吐量。
总结来说,悲观锁适用于写比较多的场景,通过加锁来保证数据一致性;乐观锁适用于读比较多的场景,通过版本号或时间戳的校验来保证数据一致性,同时减少系统开销和提高吞吐量。它们都有各自适用的场景,不能说某种锁优于另一种锁,需要根据具体情况选择合适的锁策略。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [mysql 悲观锁与乐观锁的理解及应用分析](https://download.csdn.net/download/weixin_38556189/13683374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [漫谈悲观锁乐观锁](https://blog.csdn.net/namelij/article/details/114963062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [MySQL中的悲观锁与乐观锁](https://download.csdn.net/download/weixin_38503496/12840152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文