MySQL中锁的概念是什么


今天就跟大家聊聊有关MySQL中锁的概念是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。乐观锁乐观锁大多是基于数据版本记录机制实现,一般是给数据库表增加一个”version”字段。读取数据时,将此版本号一同读出,之后更新时,对此版本号加一。此时将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。比如下单操作:查询出商品信息。根据商品信息生成订单。将商品数量减1。悲观锁悲观锁依靠数据库提供的锁机制实现。MySQL中的共享锁和排它锁都是悲观锁。数据库的增删改操作默认都会加排他锁,而查询不会加任何锁。共享锁(读锁)共享锁指的就是对于多个不同的事务,对于一个资源共享同一个锁。对某一资源加共享锁,自身可可读该资源,其他人也可以读该资源(也可以再加共享锁,即共享锁共享多个内存),但无法修改。要想修改就必须等所有共享锁都释放完之后。语法:select * from table lock in share mode;。比如:窗口1,在一个未结束的事务中给一条数据加上共享锁。窗口2,给同一条数据加上共享锁,加锁成功。窗口1和窗口2,更新该行数据,提示[Err] 1205 - Lock wait timeout exceeded; try restarting transaction。需要等到所有共享锁释放,才可以进行update操作。排它锁(写锁)排它锁指的就是对于多个不同的事务,对同一个资源只能有一把锁。对某一资源加排它锁,自身可以进行增删改查,其他人无法进行加锁操作,更无法进行增删改操作。语法:select * from table for update。窗口1,在一个未结束的事务中给一条数据加上排它锁。窗口1,更新该行数据,成功。窗口2,查询该行数据,可以查询到。窗口2给该条数据加锁,提示[Err] 1205 - Lock wait tim开发云主机域名eout exceeded; try restarting transaction。综上,共享锁就是大家一起来读,一起来共享锁,但谁都不要对锁着的数据进行修改,排它锁就是我自己就是想来修改,你们可以读,但你们都不能到锁,也不能对数据进行修改。行锁行锁就是给一行数据进行加锁。表锁表锁就是对一张表进行加锁。看完上述内容,你们对MySQL中锁的概念是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注开发云行业资讯频道,感谢大家的支持。

相关推荐: 亲身经历的一次Mysql OCP考试

2020年5月下旬参加的Mysql OCP考试,考完10分钟后就收到邮件得知自己通过了考试,1天后就在Oracle官网看到了自己的Mysql OCP证书因为工作中涉及很多Mysql数据库的维护,拿下Oracle OCM后一直想去拿下Mys开发云主机域名ql O…

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

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/19 12:17
下一篇 06/19 12:17

相关推荐