龙空技术网

mysql基础总结(十六)

coder人生 100

前言:

此刻同学们对“mysql刷新快捷键”都比较关怀,姐妹们都想要知道一些“mysql刷新快捷键”的相关文章。那么小编在网摘上汇集了一些对于“mysql刷新快捷键””的相关文章,希望小伙伴们能喜欢,看官们一起来了解一下吧!

1.redo log 和 binlog 有什么区别?

redo log(重做日志)和 binlog(归档日志)都是 MySQL 的重要的日志,它们的区别如下:

a.redo log 是物理日志,记录的是“在某个数据页上做了什么修改”。

b.binlog 是逻辑日志,记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字段加 1 ”。

c.redo log 是 InnoDB 引擎特有的;binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用。

d.redo log 是循环写的,空间固定会用完;binlog 是可以追加写入的。“追加写”是指 binlog 文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。

最开始 MySQL 里并没有 InnoDB 引擎,MySQL 自带的引擎是 MyISAM,但是 MyISAM 没有 crash-safe 的能力,binlog 日志只能用于归档。而 InnoDB 是另一个公司以插件形式引入 MySQL 的,既然只依靠 binlog 是没有 crash-safe 能力的,所以 InnoDB 使用另外一套日志系统,也就是 redo log 来实现 crash-safe 能力。

2.什么是 crash-safe?

crash-safe 是指发生宕机等意外情况下,服务器重启后数据依然不会丢失的情况。

3.什么是脏页和干净页?

MySQL 为了操作的性能优化,会把数据更新先放入内存中,之后再统一更新到磁盘。当内存数据和磁盘数据内容不一致的时候,我们称这个内存页为脏页;内存数据写到磁盘后,内存的数据和磁盘上的内容就一致了,我们称为“干净页”。

4.什么情况下会引发 MySQL 刷脏页(flush)的操作?

a.内存写满了,这个时候就会引发 flush 操作,对应到 InnoDB 就是 redo log 写满了;

b.系统的内存不足了,当需要新的内存页的时候,就会淘汰一些内存页,如果淘汰的是脏页这个时候就会触发 flush 操作;

c.系统空闲的时候,MySQL 会同步内存中的数据到磁盘也会触发 flush 操作;

d.MySQL 服务关闭的时候也会刷脏页,触发 flush 操作。

5.MySQL 刷脏页的速度很慢可能是什么原因?

在 MySQL 中单独刷一个脏页的速度是很快的,如果发现刷脏页的速度很慢,说明触发了 MySQL 刷脏页的“连坐”机制,MySQL 的“连坐”机制是指当 MySQL 刷脏页的时候如果发现相邻的数据页也是脏页也会一起刷掉,而这个动作可以一直蔓延下去,这就是导致 MySQL 刷脏页慢的原因了。

6.如何控制 MySQL 只刷新当前脏页?

在 InnoDB 中设置 innodbflushneighbors 这个参数的值为 0,来规定 MySQL 只刷当前脏页,MySQL 8 这个值默认是 0。

7.MySQL 的 WAL 技术是解决什么问题的?

A.防止误删除,找回数据用的 B.容灾恢复,为了还原异常数据用的C.事务处理,为了数据库的稳定性 D.为了降低 IO 成本

答:D 题目解析:WAL 技术的全称是 Write Ahead Logging(中文:预写式日志),是先写日志,再写磁盘的方式,因为每次更新都写磁盘的话 IO 成本很高,所以才有了 WAL 技术。

8.为什么有时候会感觉 MySQL 偶尔卡一下?

如果偶尔感觉 MySQL 卡一下,可能是 MySQL 正在刷脏页,正在把内存中的更新操作刷到磁盘中。

标签: #mysql刷新快捷键