初入Mysql底层 - InnoDB(二)

初入Mysql底层 - InnoDB(二)

(一)buffer pool
  • 一种缓冲池,也叫缓存,是存在内存的,为了减少IO读写,把在磁盘中访问过的数据存放在缓冲池中,方便下一次访问,直接从内存中获取。因为内存读写会比磁盘上读写效率高。
  • 缓存存储的基本单位为页,mysql每一次的磁盘IO都是至少操作一个页的数据量。会把这次磁盘读写的位置附近的一些数据也会缓存起来。
  • 脏页:当磁盘数据和buffer pool里的数据不一致的时候,就会产生脏页。例如:事务未提交的情况下,就会产生很多脏页。
  • 刷脏:mysql会有很多后台线程,当服务器空闲的时候,会把脏页的数据刷到磁盘当中,这一动作叫做刷脏。
(二)redo log
  • 由于buffer pool 里的数据是存在内存里的,内存上的数据是不安全的,如果发生服务器宕机等情况,内存上的数据就会丢失掉。所以这时,就需要redo log日志文件恢复数据。
  • redo log 日志文件是用来数据的崩溃恢复的,存放在磁盘上,当然在内存也有一部分存放,是用来加快这个日志文件的读写速度。
  • 这个日志文件可以设置文件大小的最大值,如果这个文件大小达到最大,会覆盖前面的内容。
(三) undo log
  • undo log是事务撤销日志,记录了事务之前的数据状态。为了保证事务的原子性。
  • undo log 的主要作用就是用来做事务的回滚。当事务发生异常,则需要事务回滚,根据这个日志来恢复到事务之前的数据状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值