基于mysql的悲观锁的运用场景?

瑞hong不还钱
  • 31

像mysql的悲观锁,我有大致了解过的。但是对于这个锁的应用场景我仍然有点困惑。

场景一:
同个服务的集群,在并发量很大的情况下去操作 单机mysql,此时需要在mysql那里使用悲观锁。

场景二:
同个服务的集群,在并发量很大的情况下去操作 mysql集群,此时需要使用分布式锁。

不知道我这么理解对不对。请大神指教,谢谢!

回复
阅读 1.1k
6 个回答
✓ 已被采纳

根据我的经验,建议优先使用分布式锁。并发量很大的时候使用悲观锁是不合适的,首先性能就跟不上,而且DB是要保护起来的,大量的锁请求也容易出问题。

mysql 锁,你也可以当分布式锁来用啊,目的都是一样的:全局锁定

mysql锁本身就是分布式锁的一种,你可以用来避免并发操作导致的数据错误,也可以用来同步系统中的一些操作

悲观锁等并不一定是需要在mysql中实现的,用程序也可以实现,但如果是服务集群,那在程序中实现悲观锁就不起作用了,此时就需要在mysql中实现或者是用分布式锁。
可以看下这个:Java锁?分布式锁?乐观锁?行锁?

场景一:
同个服务的集群,在并发量很大的情况下去操作 单机mysql,此时需要使用分布式锁。

场景二:
同个服务的集群,在并发量很大的情况下去操作 mysql集群,此时需要使用分布式锁。

分布式锁即全局锁定,可以理解为一个普通程序的普通锁锁定程序的全局线程一样的,只是层次又提升了一个而已。

并发量很大的情况下,无论是单机MySQL还是MySQL集群,都建议应用层面通过锁来控制下,比如通过分布式锁

宣传栏