mysql的ACID是怎么实现的?

事务

默认是自动提交事务
Start transaction
要执行的sql语句
commit
如果执行语句出现问题 就会执行rollback操作 回滚操作

原子性(undo log)

要么成功要么不成功 执行不成功就会回滚
undo log 实现原子性
如果执行错误 就会回滚到原来状态
将错误的版本回滚到 原来的版本
如果语句发生失败就会发生回滚 要把sql语句的执行信息

持久性(redo log)

持久性事物 就是指 这个事物一旦提交 对事物的改变是持久性的
mysql 数据存储在 磁盘中 如果每次都提取数据都会 读取数据在io中 就会有很多的性能耗能
如果每次数据都会刷新到磁盘中 实现持久话操作

数据库中 有一个buffer 缓存 每次读取完 先存在缓存中 写入数据也会写入到磁盘中 定期将buffer中的数据
写入到磁盘中
优点:读写效率提高了
缺点:增加了数据丢失的风险 没有同步到磁盘上 buffer中的内容就没了 mysql 宕机了

目前操作就是:先要记录到redo log 中 ,再将内容更新到 buffer 缓存中
mysql 默认的大小的数据页是16k
redo log 就是将有效的操作写入 log中

隔离性

写写操作 锁
写读操作 mvcc (https://blog.csdn.net/qq_44417051/article/details/119878602)
脏读 不可重复读 幻读

一致性

数据的读取 开启一致 结束一致 读取的数据一致
提交之后读取的数据就将会是一致的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值