技术总结:
今天是周四,做了一天视频剪辑,我觉得剪辑得还是不错的,一共是三个软件的操作视频。分别适用于不同类型的设备。
很多图都是自己截的,然后在viso中进行布置,作为头图。详细繁琐的操作进行了快进处理,压缩视频的时间。
另外加了字幕,这样看视频的时候不至于干瞪眼。
今天天气太热,就在家办公了,没有去公司。晚上参加了一个技术评审,机械设计大哥做了一个PPT进行讲解,我觉得还是很不错的,学习到很多,截了不少图,明天去单位总结一下。日积月累,早日成为砖家。
学习笔记:
MySQL日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志binlog (归档日志) 和 事务日志redo log(重做日志) 和 undo log(回滚日志)。
(1)执行Update操作
(2)先将原始数据读从磁盘读取到内存,修改内存中的数据。
(3)生成一条重做日志写入redo log buffer ,纪录数据被修改后的值。
(4)当事物提交时,需要将redo log buffer中的内容刷新到redo log file。
(5)事物提交后,也会将内存中修改的数据写入到磁盘。
为什么需要写Redo Log Buffer 和 Redo Log Flle?
为什么需要写Redo Log Buffer 和 Redo Log Flle?而不是直接持久化到磁盘?
直接写磁盘会有产生严重的性能问题:
(1)InnoDB在磁盘中存储的基本单元是页,可能本次修改只变更一页中几个字节,但是需要刷新整页的数据,就很浪费资源。
(2)一个事务可能修改了多页中的数据,页之间又是不连续的,就会产生随机IO,性能更差。
这种方案叫做WAL(Write-Ahead Logging),预写日志,就是先写日志,再写磁盘.
2. 刷盘的时机
InnoDB存储引擎为redo log的刷盘策略提供了innodb-f1ushlog-at-trX-commit参数,它支持三种策略:
(1) 0(延迟写) :表示每次事务提交时都只是把redo log留在redo log buffer中,开启一个后台线程,每1s刷新一次到磁盘中;