Mysql锁以及事务隔离级别


锁分类

1.行锁

加锁的力度小,InnDB支持

  • 共享锁:又称读锁。多个事务可以通过同一把锁访问数据,但是只能读不能修改数据。
  • 排他锁:又称写锁。只有一个事务能获得该锁,其他事务都不能获得。innodb会对写操作自动加上排他锁。
  • 自增锁;mysql中的自增字段。事务回滚不会使自增序列回滚。

常见的行锁算法:

user.userid(1,4,9)

  • 记录锁:锁一条具体数据
  • 间隙锁:在RR隔离级别下,会加间隙锁。锁住一个范围,而不是锁住具体数据,是为了防止幻读。
  • 临键锁:间隙锁+右记录锁,形成一个左开右闭的区间范围。

2.表锁

加锁粒度大,MyISAM和InnDB都支持

  • 表共享锁:类似行共享锁。
  • 表排他锁:类似行排他锁。
  • 意向锁:InnDB在添加行锁的时候会在表上自动添加意向锁。

3.全局锁

加锁之后整个数据库都处于只读状态,所有的写操作都会被挂起。一般用于数据库备份的时候。


数据的隔离级别

  • 脏读:事务A读取到事务B未提交的数据
  • 不可重复读:事务A读取到事务B已经修改的数据
  • 幻读:事务A读取到事务B已经新增的数据
隔离级别脏读不可重复读幻读
读未提交
读已提交×
可重复读××
可串行化×××

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值