MySQL实现翻译_Mysql锁(翻译)

本文详细介绍了MySQL的锁机制,包括共享锁(s)、排它锁(x)、意向锁(IS/IX)、记录锁、间隙锁、Next-Key Locks、插入意向锁以及AUTO-INC锁。解释了各种锁的作用、兼容性和应用场景,如防止幻读、死锁等,旨在帮助理解InnoDB存储引擎的行级锁策略。
摘要由CSDN通过智能技术生成

内容主要是对mysql文档的翻译。

1. shared(s) 共享锁

2. exclusive(x) 排它锁

innodb的s锁和x锁是行级锁。

事务T1获得s锁,事务T2仍然可以获得s锁。

事务T1获得x锁,事务T2只有在T1释放该锁后,才能获得x锁。

共享锁的作用是,就像在说“我现在要读这条数据,你们不要改它”。

排它锁就是:“我现在要改这条数据,所以你们不要改,也不要读”

3. Intention Locks

意向锁

innodb支持允许行级锁和表级锁共存的多粒度锁。为了使多粒度锁能实用,使用了一种被称为意向锁的附加类型的锁。意向锁是innodb中的表级锁,它表明一个事务为了表中的某一行后续需要哪种类型的锁(共享或排他)。在innodb中使用了2种意向锁(假定事务T请求了表 t 某种类型的锁):

intention shared(IS): 事务T想要对表 t 中的某些行加s锁。

intention exclusive(IX):事务T想要对表 t 中的某些行加x锁。

例如:select ... lock in share mode 加IS锁,而 select ... for update 加IX锁。

意向锁的规则如下:

在一个事务获取表t中某行的s锁之前,它必须先获取一个表t的IS锁或者更强的锁。

在一个事务获取表t中某行的x锁之前,它必须先获取一个表t的IX锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值