Mysql数据库的悲观锁和乐观锁

阅读: 评论:0

Mysql数据库的悲观锁和乐观锁

Mysql数据库的悲观锁和乐观锁

 一次数据库的修改数据的过程包括:读取,修改,写入。

 悲观锁,认为在整个过程中都会面临数据被其他session修改的可能性,所以为了保证修改过程能顺利进行,使用排它锁保证在当前session修改数据时,不允许其他session修改相同行的数据。

 乐观锁,认为在读取和修改的时候不会有session修改同行数据,所以它只在写入的时候进行一下检查版本号。如果版本号没有变,也就是说读取数据和写入新数据时版本号比对相同,那么则将数据写入。否则,返回操作失败信息,由用户决定如何处理。

 悲观锁的使用事例:

for update事例:

          set autocommit =0;//关闭自动提交

          begin;//开始事务

          select * from order where id=989879 for update;//查询信息

          update order set name='names';//修改信息

          commit;//提交事务

执行select…for update时,一般的SELECT查询则不受影响。

乐观锁的使用事例:

例如有表Teacher,字段:

| id | name | version |

| 23|  coco   |  4 |

当事务一进行更新操作:update teacher set name='nason' where id = #{id} and version = #{version};

此时操作完后数据会变为id = 23,name = nason,version = 5,当另外一个事务二同样执行更新操作的时候,却发现version != 4,此时事务二就会操作失败,从而保证了数据的正确性。





本文发布于:2024-01-28 10:56:47,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064106136924.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:悲观   乐观   数据库   Mysql
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23