技术日志挑战——第16天:0808

2024-08-08 22:55:12 浏览数 (1)

技术总结:

今天是周四,做了一天视频剪辑,我觉得剪辑得还是不错的,一共是三个软件的操作视频。分别适用于不同类型的设备。

很多图都是自己截的,然后在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刷新一次到磁盘中;

0 人点赞