什么是MySQL死锁:


什么是资源竞争死锁:
比如连接池 ShardingSphere文档中写到关于 数据库连接的资源竞争问题


如何避免死锁:
思路:
-
1、 因为加锁而导致死锁, 所以放弃使用悲观锁方案, 改为乐观锁方案
-
2、 如果不能用乐观锁,则用分布式锁,放宽锁的粒度, 用一个锁来保护单表或多表中的多行资源;缺点是: 只能尽可能的解决了死锁的问题, 不能完全解决死锁的问题, 因为业务接口众多,业务逻辑众多, 可能会导致不一致、死锁; 所以不建议用。
乐观锁: 通过添加一个version
更新一次version++
悲观锁处理幂等性的方法:
解决了幂等性一锁、二判、三更新
的问题
乐观锁处理幂等性的方法:
1、 查询: 查询目标记录连带version字段一同返回
2、 判断: 判断是否需要更新、以及是否已经更新
3、 更新: 乐观锁更新,通过比较版本号实现比较
乐观锁幂等性更新示例:




网友评论