MySQL - 常见的锁机制

MySQL中常见的锁机制有以下几种:共享锁(Shared Lock):共享锁也被称为读锁,它允许多个...

MySQL中常见的锁机制有以下几种:

共享锁(Shared Lock):

共享锁也被称为读锁,它允许多个会话同时读取同一资源,但不允许有其他会话持有排他锁。共享锁可以并发地存在,不会相互阻塞。共享锁可以防止其他会话对被锁定资源进行修改,但允许其他会话获得相同的共享锁。

 

共享锁可以通过以下方式实现:

SELECT语句中使用FOR SHARE或LOCK IN SHARE MODE子句,例如:SELECT * FROM table_name FOR SHARE;

事务中使用SELECT ... FOR SHARE语句,例如:

START TRANSACTION;
SELECT * FROM table_name WHERE ... FOR SHARE;
...
COMMIT;

 

排他锁(Exclusive Lock)(也叫行锁):

排他锁也被称为写锁,它用于防止其他会话读取或修改被锁定资源。只有一个会话可以持有排他锁,其他会话无法同时获取相同的共享锁或排他锁。排他锁可以防止其他会话同时读取或修改资源,确保资源的独占性。

排他锁可以通过以下方式实现:

SELECT、INSERT、UPDATE、DELETE语句的默认行为会自动获取排他锁。

事务中使用SELECT ... FOR UPDATE语句,例如:

使用排他锁时,其他除不带“for update” 的 select 查询可以获取到数据,其他数据读写均需要等待commit后才能实现读写

START TRANSACTION;
SELECT * FROM table_name WHERE ... FOR UPDATE;
...
COMMIT;

 

thinkPHP 使用

Db::startTrans();

Db::where()->lock(true)->find();

// do some thing

if(true){
    Db::commit();
}else{
    Db::rollback();
}

另:

在MySQL中,如果一个会话获得了行锁,其他会话可以通过以下两种方式处理:

等待锁释放:

默认情况下,其他会话会等待行锁被释放,然后再继续执行。当一个会话持有排他锁时,其他会话请求获取该行的共享锁或排他锁时会被阻塞。当排他锁被释放后,请求的会话将获得锁并继续执行。

超时断开:

在MySQL的配置中,可以设置等待行锁的超时时间。如果等待超时,会话将会自动被断开,释放锁资源,然后报错返回。

要注意的是,默认情况下等待时间是无限的(即不会超时),这可能导致其他会话长时间等待。为了避免死锁或长时间的阻塞,可以在配置中设置合适的等待超时时间,例如通过innodb_lock_wait_timeout参数进行配置。

另外,如果你使用事务,在事务中请求行锁时,MySQL会自动处理锁请求的等待和超时。如果事务等待超时,MySQL会自动回滚事务,并将错误返回给应用程序。

综上所述,MySQL默认情况下会等待行锁的释放,但需要注意设置合适的等待超时时间以及处理死锁情况,以确保系统的并发性能和稳定性。

 

 

 

记录锁(Record Lock):

记录锁是一种行级锁,用于保护表中的行,防止其他会话修改或删除该行。多个记录锁可以并发地存在,只要它们没有冲突(即没有共享相同的行)。记录锁是自动获得的,通过在SQL操作(例如UPDATE或DELETE)中使用WHERE子句指定条件来创建。

 

记录锁是自动获得的,可以通过以下方式实现:

执行SQL操作(例如UPDATE或DELETE)时,通过WHERE子句指定条件,例如:UPDATE table_name SET ... WHERE ...;

在需要保持锁的同时,设置事务的隔离级别为SERIALIZABLE。

 

隐式锁(Implicit Lock):

隐式锁是MySQL内部在执行特定操作时自动加上的锁,不需要显式地指定。例如,在使用INSERT或UPDATE等语句修改表时,MySQL会自动对相关的行加上适当的排他锁,避免多个会话同时修改相同的行。

 

表锁(Table Lock):

表锁是MySQL中一种粗粒度的锁机制,它用于锁定整个表而不是特定的行。当一个会话持有表锁时,其他会话无法同时获取相同表的共享锁或排他锁。表锁适用于需要锁定整个表的操作,但可能会对并发性能产生较大影响,因为其他会话无法并行操作相同的表。

 

表锁可以通过以下方式实现:

LOCK TABLES语句用于显式锁定一个或多个表,例如:

LOCK TABLES table_name READ;
...
UNLOCK TABLES;

在事务中,可以使用LOCK TABLES语句锁定表,或者设置事务的隔离级别为SERIALIZABLE。

 

这些锁机制可以通过合理的设计和使用,保证数据库中数据的一致性和完整性,并提供适当的并发控制。在使用锁时,需要根据具体的业务需求和并发访问模式进行选择和优化,以确保系统的性能和稳定性。

 

评论

游客 回复该评论 2024-07-11 22:36:05
支持楼上的!https://wqtz.gzexgrp.com
游客 回复该评论 2024-07-11 22:45:46
太高深了,理解力不够用了!http://rk7s5.lkldl.com
游客 回复该评论 2024-07-12 11:57:57
求加**!http://8lny.21es.cn
游客 回复该评论 2024-07-12 13:55:12
鸟大了,什么林子都敢进啊!http://c1zox.sophmoon.cn
游客 回复该评论 2024-07-12 14:56:48
信楼主,得永生!https://www.eny365.com/countryside/static/cqjylist/all/all/000000/19.html
游客 回复该评论 2024-07-12 17:23:03
这么经典的话只有楼主能想到!http://lb0mv.21es.cn
游客 回复该评论 2024-07-13 06:14:09
楼主内心很强大!http://huichengyu.com/news/64c399575.html
游客 回复该评论 2024-07-13 10:30:55
好东西,学习学习!http://www.hntbhz.cn/post/32.html
安福相册 回复该评论 2024-07-13 17:40:20
莆田鞋 https://www.anfu0594.com
游客 回复该评论 2024-07-13 17:57:50
网站做得不错http://mofeimo.com/?pic_14/233.html
游客 回复该评论 2024-07-13 18:25:23
我回帖楼主给加积分吗?http://www.hntbhz.cn/post/20.html
安福相册 回复该评论 2024-07-13 19:23:33
莆田鞋 https://www.anfu0594.com
游客 回复该评论 2024-07-13 20:29:10
太高深了,理解力不够用了!http://273z05.lkldl.com
游客 回复该评论 2024-07-13 21:28:49
看了这么多帖子,第一次看到这么经典的!http://www.hntbhz.cn/post/60.html
游客 回复该评论 2024-07-13 23:38:52
楼主的头像能辟邪啊!http://www.hntbhz.cn/post/112.html
游客 回复该评论 2024-07-14 00:21:23
楼主该去看心理医生了!http://www.hntbhz.cn/post/70.html
游客 回复该评论 2024-07-14 07:19:29
网页的加载速度非常快,不会影响用户体验。http://www.hntbhz.cn/post/143.html
游客 回复该评论 2024-07-14 10:13:55
收藏了,怕楼主删了!http://www.hntbhz.cn/post/150.html
游客 回复该评论 2024-07-14 12:00:20
很多天不上线,一上线就看到这么给力的帖子!http://www.hntbhz.cn/post/194.html
游客 回复该评论 2024-07-14 16:46:53
看帖、回帖、拿分、走人http://www.hntbhz.cn/post/52.html
游客 回复该评论 2024-07-15 00:56:22
林子大了,什么鸟都有了啊!http://www.hntbhz.cn/post/83.html
游客 回复该评论 2024-07-15 03:30:10
楼主写的很经典!http://www.hntbhz.cn/post/91.html
游客 回复该评论 2024-07-15 10:53:41
楼主看起来很有学问!http://www.ejy365.com/info/ejy187100
游客 回复该评论 2024-07-15 15:56:49
在哪里跌倒,就在那里多爬一会儿!http://manzhouli.viptor.cn
游客 回复该评论 2024-07-15 17:12:07
不是惊喜,是惊吓!http://yanjin.viptor.cn
游客 回复该评论 2024-07-15 17:32:56
不错哦,楼主这是要火的节奏啊!https://wqtz.gzexgrp.com
游客 回复该评论 2024-07-16 00:24:09
楼主是一个神奇的青年!http://jinfeng.viptor.cn
游客 回复该评论 2024-07-16 06:41:04
楼上的别说的那么悲观好吧!https://wqtz.gzexgrp.com
游客 回复该评论 2024-07-16 11:35:34
怪事年年有,今年特别多!http://heng.viptor.cn
访客 回复该评论 2024-07-16 12:18:58
莆田安福鞋子批发网 https://www.b0594.com
游客 回复该评论 2024-07-16 17:54:18
青春不在了,青春痘还在!https://www.eny365.com/countryside/static/cqjyinfo/ejy154793.html
游客 回复该评论 2024-07-17 01:48:06
信楼主,得永生!http://hwa1h.nzrtg.com
游客 回复该评论 2024-07-17 22:56:39
今天过得很不爽!http://xan.viptor.cn
游客 回复该评论 2024-07-18 00:03:56
支持一下!http://pingdingshan.viptor.cn
游客 回复该评论 2024-07-18 03:28:12
谢谢楼主的分享!http://changting.viptor.cn
游客 回复该评论 2024-07-18 09:49:34
终于看完了,很不错!https://www.eny365.com/countryside/static/cqjyinfo/ejypl6257.html
游客 回复该评论 2024-07-18 11:59:15
很给力!https://www.eny365.com/countryside/static/cqjyinfo/ejy186886.html
游客 回复该评论 2024-07-18 15:07:24
管它三七二十一!http://xichang.viptor.cn
安福 回复该评论 2024-07-18 18:08:15
莆田安福货源网 https://www.b0594.com
游客 回复该评论 2024-07-19 06:00:09
楼主很有艺术范!https://www.eny365.com/countryside/static/cqjyinfo/ejy179024.html
游客 回复该评论 2024-07-19 21:24:18
我默默的回帖,从不声张!http://www.getti.cn/359810.html
安福相册 回复该评论 2024-07-19 22:25:51
莆田安福电商城官网 https://www.059401.com
游客 回复该评论 2024-07-20 04:38:43
青春不在了,青春痘还在!http://www.hxhbm.com/790882.html
游客 回复该评论 2024-07-20 06:43:20
楼主很有激情啊!http://27pv5y.blog.getti.cn
游客 回复该评论 2024-07-20 08:06:49
灌水不是我的目的!http://news.getti.cn/914483.html
游客 回复该评论 2024-07-20 08:52:07
这里的资源非常丰富,帮助我解决了很多问题。https://www.eny365.com/countryside/static/cqjyinfo/ejy178819.html
游客 回复该评论 2024-07-20 16:55:41
宇宙第一贴诞生了!http://news.getti.cn/136489.html
访客 回复该评论 2024-07-20 18:13:07
0594安福网 https://7ox.cn
游客 回复该评论 2024-07-20 22:49:21
看在楼主的面子上,认真回帖!https://www.eny365.com/countryside/static/cqjylist/all/all/000000/11.html
访客 回复该评论 2024-07-20 23:28:19
莆田安福相册货源网 https://ccc444.com
访客 回复该评论 2024-07-20 23:46:26
0594安福相册 https://www.b0594.com
游客 回复该评论 2024-07-21 00:59:26
鉴定完毕!http://t48q93.blog.getti.cn
游客 回复该评论 2024-07-21 04:03:03
论坛的帖子越来越有深度了!http://www.getti.cn/570581.html
游客 回复该评论 2024-07-21 06:11:53
看了这么多帖子,第一次看到这么经典的!http://pytdi.blog.hxhbm.com
游客 回复该评论 2024-07-21 17:00:36
楼主今年多大了?http://qunyingxiang.viptor.cn
游客 回复该评论 2024-07-21 20:51:45
感觉不错!http://www.getti.cn/704869.html
游客 回复该评论 2024-07-22 10:34:51
网站做得不错http://m.hxhbm.com/557331.html
游客 回复该评论 2024-07-22 15:25:49
论坛人气好旺!http://ullbe.m.hxhbm.com
游客 回复该评论 2024-07-22 17:30:06
这么版块的帖子越来越有深度了!http://fpim.m.hxhbm.com
游客 回复该评论 2024-07-22 18:57:05
我和我的小伙伴都惊呆了!http://blog.hxhbm.com/095711.html
游客 回复该评论 2024-07-23 01:49:13
刚分手,心情不好!http://m.hxhbm.com/611831.html
游客 回复该评论 2024-07-23 14:07:38
学习雷锋,好好回帖!http://blog.getti.cn/737446.html
游客 回复该评论 2024-07-24 01:59:37
今天的心情很不错啊http://hxhbm.com/501734.html
游客 回复该评论 2024-07-25 00:40:04
无图无真相!http://m.getti.cn/286537.html
游客 回复该评论 2024-07-25 14:49:24
这位作者的文笔极其出色,用词精准、贴切,能够形象地传达出他的思想和情感。http://blog.hxhbm.com/709958.html
游客 回复该评论 2024-07-25 16:27:22
看了这么多帖子,第一次看到这么经典的!http://www.indaseg.com
游客 回复该评论 2024-07-25 16:30:38
楼主是一个神奇的青年!http://www.indaseg.com/a/a/1339.html
游客 回复该评论 2024-07-25 16:49:06
缺乏激情了!http://www.indaseg.com
游客 回复该评论 2024-07-25 16:54:11
没人理我,好伤心啊!http://www.indaseg.com/a/a/3189.html
游客 回复该评论 2024-07-25 17:18:39
今天的心情很不错啊http://www.indaseg.com/a/a/5039.html
游客 回复该评论 2024-07-25 18:25:04
收藏了,改天让朋友看看!http://www.mnpzs.com
游客 回复该评论 2024-07-25 20:12:35
回帖也有有水平的!http://www.indaseg.com/a/a/2971.html
游客 回复该评论 2024-07-25 21:40:22
不灌水就活不下去了啊!http://www.indaseg.com/a/a/359.html
游客 回复该评论 2024-07-25 21:59:15
世界末日我都挺过去了,看到楼主我才知道为什么上帝留我到现在!http://www.xjaxcs.com
游客 回复该评论 2024-07-25 22:28:03
东方不败还是灭绝师太啊?http://www.indaseg.com/a/a/4059.html
游客 回复该评论 2024-07-26 00:14:25
最近回了很多帖子,都没人理我!http://www.x7jz.com
游客 回复该评论 2024-07-26 00:50:43
知识就是力量啊!http://www.yyjxsb.com
游客 回复该评论 2024-07-26 02:38:29
这个帖子好无聊啊!http://www.indaseg.com
游客 回复该评论 2024-07-26 05:38:46
收藏了,楼主加油!http://www.indaseg.com/a/a/1011.html
游客 回复该评论 2024-07-26 05:39:59
支持一下,下面的保持队形!http://www.indaseg.com
游客 回复该评论 2024-07-26 07:27:10
信楼主,得永生!http://www.qx5.net
游客 回复该评论 2024-07-26 07:29:29
楼主的帖子越来越有深度了!http://www.indaseg.com/a/a/5255.html
游客 回复该评论 2024-07-26 09:45:51
网页的加载速度非常快,不会影响用户体验。http://www.usapennysavers.com
游客 回复该评论 2024-07-26 10:17:39
谢谢楼主的分享!http://www.indaseg.com/a/a/1881.html
游客 回复该评论 2024-07-26 10:28:19
态度决定一切,不错!http://www.indaseg.com
游客 回复该评论 2024-07-26 10:54:13
这么好的帖子,应该加精华!http://www.zhanxindiaocha.com
游客 回复该评论 2024-07-26 10:55:58
论坛人气好旺!http://www.indaseg.com/a/a/1881.html
游客 回复该评论 2024-07-26 11:41:59
学习雷锋,好好回帖!http://www.videopro-navi.com
游客 回复该评论 2024-07-26 12:29:19
对牛弹琴的人越来越多了!http://www.kq6.net
游客 回复该评论 2024-07-26 12:29:21
楼上的很有激情啊!http://www.indaseg.com/a/a/4275.html
游客 回复该评论 2024-07-26 12:30:06
楼主的头像能辟邪啊!http://www.indaseg.com/a/a/2969.html
游客 回复该评论 2024-07-26 12:30:21
楼主的等级很高啊!http://www.indaseg.com
游客 回复该评论 2024-07-26 12:55:51
支持一下!http://www.indaseg.com/a/a/4819.html
游客 回复该评论 2024-07-26 15:02:41
听楼主一席话,省我十本书!http://www.indaseg.com/a/a/4057.html
游客 回复该评论 2024-07-26 17:45:55
知识就是力量啊!http://www.indaseg.com
游客 回复该评论 2024-07-26 18:12:07
楼主很有经验啊!http://ygw1.chancel.net
游客 回复该评论 2024-07-26 21:47:15
对牛弹琴的人越来越多了!http://www.indaseg.com/a/a/1121.html
游客 回复该评论 2024-07-26 23:50:27
楼主就是我的榜样哦http://xkpbt.lost-marbles.com
游客 回复该评论 2024-07-27 00:05:32
顶一个!http://www.indaseg.com/a/a/2209.html
游客 回复该评论 2024-07-27 00:31:47
楼上的这是啥态度呢?http://opm.mean-girl.com