悲观锁与乐观锁怎么在Mysql中使用


悲观锁与乐观锁怎么在Mysql中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。悲观锁
悲观锁,认为数据是悲观的。当我们查询数据的时候加上锁。防止其他线程篡改,直到对方拿到锁,才能修改。比如,有如下的表。status=1表示可以下单,status=2表示不可以下订单。假如在并发的过程中有两个用户同时查到status=1,那么从逻辑上来说都可以去新增订单,但是会造成商品超卖。如下例子session1执行session2执行这时候session2是阻塞的,因为锁还在session1,所以锁一直在等待。如果session1一直不提交,那么session2将在一定时间后超时断开连接,并且报(1205, ‘Lock wait timeout exceeded; try restarting transaction’)错误,开发云主机域名具体的锁等待时间可以通过设置innodb_lock_wait_timeout参数进行控制。如果此时在session1中执行commit 操作,那么session2将得到查询结果,并把锁交给session2。我们还可以通过来进一步查看锁信息。乐观锁
乐观锁不同于悲观锁,乐观锁是通过自身的程序实现,而不是mySql自身实现。乐观锁查询的时不上锁,只有在更新的时候检查版本号。比如我们查询到goods表中version 为1 那么在更新这个表的时候Sql将是这里的version是查询时候的版本号,每次更改将会导致version+1。如果版本号不匹配更新将不成功。关于悲观锁与乐观锁怎么在Mysql中使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注开发云行业资讯频道了解更多相关知识。

相关推荐: MySQL怎样选择合适的索引

这篇文章主要介绍了MySQL怎样选择合适的索引,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先来看一个栗子如果用name索引查找数据需要遍历name字段联合索引树,然后根据遍历出来的主键值去主键…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/15 17:56
下一篇 06/15 17:57

相关推荐