mysql 锁原理与概念

1乐观锁

实现的机制

  • 一般会在数据库中加一个字段一般叫(version)

实现原理

  • 取出记录时,获取当前version
  • 更新时,带上这个version
  • 执行更新时, set version = newVersion where version = oldVersion
  • 如果version不对,就更新失败

2悲观锁

3事务

3.1原子性

**原理: **

  • 当我们开启了事务,将数据全部写到日志中
  • 利用了滚回日志(undo)
  • 如果出现异常,根据日志中的记录回滚

保证事务的原子性

3.2持久性

作用: 容灾备份

原理:

  • 有一个缓冲池,异步线程统统不数据到硬盘中
  • 保存在redo日志文件之中,保证数据的不容易对丢失

3.3隔离性

作用:解决高并发问题,会有以下问题

  1. 脏读
  2. 幻读
  3. 不可重复读
  4. 更新数据丢失问题

隔离级别:实现原理

通过对锁的组合实现并发控制

分类:

  • 共享锁(读锁)

多个请求可以同时共享一把锁,提高高并发效率

  • 排它锁(写锁)(Sql语句: for update)

排斥其他请求,等待写入完成,才释放

  • MVCC 多版本并发控制(乐观锁原理)

会创建两个隐藏的列,用来做版本控制,版本不一样就拒绝写入

3.4一致性

  • 事务完成时,数据必须处于一致状态,数据的完整性约束没有被破坏,事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没 有执行过一样。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值