技术总结:
今天是周三,时间挺快的,又到了周中了。
今天完成了条带计算部分的程序,在这一版中,按照每条轨迹逐个点进行计算,中间对于头部和尾部进行额外的处理,另外对于中间的部分也进行了处理,保证结果的正确性。
现在看起来条带计算应该问题不大。
学习笔记:
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引擎会在适当的时候,将这个操作记录更新到磁盘里面。