mysql读写锁

一、表锁
分为read锁和write锁
1、read锁,建立方法
比如我的服务器上有个某数据库,里面有两张表,分别是book和food。我有两台session要访问这个数据库。session1执行这个语句对book加read锁。

lock table book read;

那么现在session1对book加了读锁。之后,自己读book没问题,session2读book没问题。但是session1不能写book表(报错),也不能读其他表(报错)。session2写book表会阻塞(不会报错),等待session1将book表unlock会执行写操作。
2、write锁,环境同上

lock table book write;

session1对book建立了写锁,它可以读写这个表,不能读写其他表。
session2读写book都会阻塞。

二、行锁
不需要自己建立,InnoDB会自动加行锁。
行锁对于读操作无影响,影响写操作,主要update。
当一个session,update某个表的一行的时候,其他session可以读取这个行,但是不能写,会被阻塞。
但是不当操作导致索引失效,会导致行锁变成表锁。
三、间隙锁
当session1对表进行范围操作,会产生间隙锁。
四、对某一行加锁

select × from table where col=a for update
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值