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)到事务开始前的状态,就像这个事务从来没 有执行过一样。
发布了56 篇原创文章 · 获赞 3 · 访问量 4436

猜你喜欢

转载自blog.csdn.net/Tang_5253/article/details/101319932