MySQL 悲观锁与乐观锁的详解 观锁与乐观锁是人们定义出来的概念,你可以理解为一种思想,是处理并发资源的常用手段。 不要把他们与 mysql 中提供的锁机制 (表锁,行锁,排他锁,共享锁) 混为一谈。 一、悲观锁 顾名思义,就是对于数据的处理持悲观态度,总认为会发生并发冲突,获取和修改数据时,别人会修改数据。所以在整个数据处理过程中,需要将数据锁定。 悲观锁的实现,通常依靠数据库提供的锁机制实现,比如 mysql 的排他锁,select …. for update 来实现悲观锁。 二、乐观锁 顾名思义,就是对数据的处理持乐观态度,乐观的认为数据一般情况下不会发生冲突,只有提交数据更新时,才会对数据是否冲突进行检测。 如果发现冲突了,则返回错误信息给用户,让用户自已决定如何操作。 乐观锁的实现不依靠数据库提供的锁机制,需要我们自已实现,实现方式一般是记录数据版本,一种是通过版本号,一种是通过时间戳。 给表加一个版本号或时间戳的字段,读取数据时,将版本号一同读出,数据更新时,将版本号加 1。 当我们提交数据更新时,判断当前的版本号与第一次读取出来的版本号是否相等。如果相等,则予以更新,否则认为数据过期,拒绝更新,让用户重新操作。
 2
 0
 分享
评论图片
评论