技术日志挑战——第15天:0807

2024-08-07 20:02:56 浏览数 (1)

技术总结:

今天是周三,时间挺快的,又到了周中了。

今天完成了条带计算部分的程序,在这一版中,按照每条轨迹逐个点进行计算,中间对于头部和尾部进行额外的处理,另外对于中间的部分也进行了处理,保证结果的正确性。

现在看起来条带计算应该问题不大。

学习笔记:


MySQL日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志binlog (归档日志)事务日志redo log(重做日志)undo log(回滚日志)

MySQL日志主要包括七种:

  • 1.重做日志(redo log)
  • 2.回滚日志(undo log)
  • 3.归档日志(bin log)
  • 4.错误日志(error log)
  • 5.慢查询日志(slow query log)
  • 6.一般查询日志(general log)
  • 7.中继日志(relay log)

二、Redo Log

redo log(重做日志)是nnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。比如MySQL实例挂了或宕机了,重启时,InnoDB存储引擎会使用redo log恢复数据

(1)redo log是物理日志,纪录页的物理修改操作

  • 记录的是在某个数据页做了什么修改,比如对x表空间中的N数据页ZZZ偏移量的地方做了AAA更新:

(2)保证数据的持久性

  • 持久性,redo log会在事务提交时将日志存储到磁盘redo log file,保证日志的持久性。同时mysql会将数据写入磁盘,保证数据的持久性。

1. redo log重做日志的组成

  • 一是内存中的重做日志缓存,叫做redo log buffer
  • 二是重做日志文件,叫做redo log file

MySQL中数据是以页为单位,你查询一条记录,会从硬盘把一页的数据加载出来,加载出来的数据叫数据页,会放入到Buffer Pool中。后续的查询都是先从Buffer Pool中找,没有命中再去硬盘加载,减少硬盘IO开销,提升性能。

更新表数据的时候,也是如此,发现Buffer Pool里存在要更新的数据,就直接在Buffer Pool里更新。然后会把在某个数据页上做了什么修改记录到重做日志缓存(redo log buffer)里,接着刷盘到redo log文件里。同时,InnoDB引擎会在适当的时候,将这个操作记录更新到磁盘里面。

0 人点赞