mysql事务隔离级别、锁的分类及实现原理

1.mysql锁分为表锁、行锁、页锁,innodb引擎支持表锁与行锁;

2.锁分为共享锁与排它锁,共享锁允许多个session同时持有共享锁,同时当一条记录共享锁被某个session持有时,其他session不能获取到该记录的排他锁;当一个session持有排他锁时,其他的session无法同时持有排它锁与共享锁;

3.innodb引擎的行锁是通过索引项实现的,也就是说只有使用索引记录才能为表上行锁,否则是表级锁,并发性差;注意innodb引擎支持间隙锁,例如有索引1,5,9若索引列不是唯一索引,则会在给5记录上锁的时候,同时2,3,4,6,7,8也会上锁,会导致2上插入数据时所等待,因此尽量使用唯一索引可以避免锁间隙;

4.事务隔离级别分为事务未提交读,事务已提交读,不可重复读(侧重修改),与幻读(侧重新增与删除),mysql解决幻读是通过间隙锁与表虚拟快照MVCC实现的或者锁住整个表。

转载于:https://my.oschina.net/u/3647536/blog/1829896

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值