MySQL数据更新

数据更新流程

流程:
  1. 客户端发起请求,更新一条数据
  2. MySQL Server接受到客户端请求,向存储引擎调用查询该条需要更新的数据
  3. InnoDB存储引擎从磁盘中读取数据页写入内存中
  4. InnoDB从数据页中查出符合条件的行数据
  5. MySQL修改该行数据
  6. InnoDB写入反更新语句的undo log
  7. 更新内存中的数据页
  8. redo log写入内存
  9. 当客户端执行commit提交事务时
  10. MySQL Server的写bin log内存
  11. InnoDB 提交事务
加锁的流程

注意:

bin log 和 redo log都是写入内存,可通过配置规定多久将内存中的日志落入磁盘中

redo log 可以通过修改innodb_flush_log_at_trx_commit参数配置讲redo log buffer写入磁盘中的时机

刷脏页

有时候Mysql会卡几秒不处理事务,而且磁盘IO很高,这个时候不是Mysql在进行垃圾回收,而是Mysql在刷脏页

什么是脏页

因为mysql的数据更新首先都是在内存中,所以就会导致内存中的数据与磁盘上的数据不一致,而内存中的数据页就是脏页。脏页的存在可以加快查询,且保证事务的数据隔离性

什么是刷脏

刷脏就是还要把内存中的数据页写到磁盘中,同时删除此页相关的redo log,推进check point

刷脏的时间点
  • 内存中的脏页太多时,内存不足
  • redo log写满了,需要推进check point
  • 系统空闲,提前刷脏,预防上述两种情况
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值