mysql nextval同步锁_Mysql锁与并发

Mysql锁类型:

一、普通锁、读锁(共享锁)、写锁(排他锁);

1、普通锁

串行、互斥

2、读锁

先加读锁后,可以与其他读锁共存

3、写锁

先加写锁,不能与其他锁共存

redo/undo日志

在开始事务前会先保存一份undo日志,这份日志可以用于其他线程读取,也可用于新事务失败后回滚。

insert操作,undo日志记录新数据的PK,直接删除,

update/delete操作,undo日志记录旧数据row,回滚直接恢复。

redo是当前事务的操作数据,将整个事务的数据放入日志中,然后在事务提交后再输入磁盘,可实现数据分批次统一处理,随机读写优化为顺序读写。

多版本 MVVC,为了提高并发,于是采用MVVC的方式,通过多版本数据实现数据读写并发;读取的数据就是事务开始前的undo日志。

多版本快照读就是使用MVVC机制,

RC 总能读取到最新数据(自己或其他事务已经提交的)

RR 只能读取事务中第一次读取时读取的数据

INNODB 会对row新增3个属性,

1、DB_TRX_ID 6字节,记录最后一次修改它的事务ID,

2、DB_ROLL_PTR,7字节,记录回滚段undo日志的指针地址,

3、DB_ROW_ID,6字节,自增长ID。

二、表锁、行锁、区域(间隙)锁;

表锁是锁整张表,

1、自增长会产生自增长锁,是一种表锁,它会阻塞其他事务的插入操作

2、优化1的情况,就出现了插入意向锁,是间隙锁的一种,只要插入位置不冲突,就不会阻塞

行锁是锁某一行记录,INNODB支持行锁,实现是锁住行的索引;所以如果操作没有命中索引,也就不会使用行锁,而是使用表锁。

区域(间隙)锁,防止其他事务在间隔中(索引间隔)插入数据,导致不可重复读,所以RC不会有该锁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值