美文网首页
MySQL一些问题

MySQL一些问题

作者: 剑客kb | 来源:发表于2019-04-01 08:40 被阅读0次

追问 1:不引入两个日志,也就没有两阶段提交的必要了。只用 binlog 来支持崩溃恢复,又能支持归档,不就可以了?


只用 binlog 支持崩溃恢复

如果在图中标的位置,也就是 binlog2 写完了,但是整个事务还没有 commit 的时候,MySQL 发生了 crash。重启后,引擎内部事务 2 会回滚,然后应用 binlog2 可以补回来;但是对于事务 1 来说,系统已经认为提交完成了,不会再应用一次 binlog1。但是,InnoDB 引擎使用的是 WAL 技术,执行事务的时候,写完内存和日志,事务就算完成了。如果之后崩溃,要依赖于日志来恢复数据页。也就是说在图中这个位置发生崩溃的话,事务 1 也是可能丢失了的,而且是数据页级的丢失。此时,binlog 里面并没有记录数据页的更新细节,是补不回来的。

追问 2:正常运行中的实例,数据写入后的最终落盘,是从 redo log 更新过来的还是从 buffer pool 更新过来的呢?
redo log 并没有记录数据页的完整数据,所以它并没有能力自己去更新磁盘数据页

  1. 如果是正常运行的实例的话,数据页被修改以后,跟磁盘的数据页不一致,称为脏页。最终数据落盘,就是把内存中的数据页写盘。这个过程,甚至与 redo log 毫无关系。
  2. 在崩溃恢复场景中,InnoDB 如果判断到一个数据页可能在崩溃恢复的时候丢失了更新,就会将它读到内存,然后让 redo log 更新内存内容。更新完成后,内存页变成脏页,就回到了第一种情况的状态。

追问 3:redo log buffer 是什么?是先修改内存,还是先写 redo log 文件?

begin;
insert into t1 ...
insert into t2 ...
commit;

这个事务要往两个表中插入记录,插入数据的过程中,生成的日志都得先保存起来,但又不能在还没 commit 的时候就直接写到 redo log 文件里。
所以,redo log buffer 就是一块内存,用来先存 redo 日志的。也就是说,在执行第一个 insert 的时候,数据的内存被修改了,redo log buffer 也写入了日志。
但是,真正把日志写到 redo log 文件(文件名是 ib_logfile+ 数字),是在执行 commit 语句的时候做的。(当然,内存不够的等情况下,还是可能会出现被动写入磁盘)

参考:http://mysql.taobao.org/monthly/2018/07/01/
https://time.geekbang.org/column/article/73479

相关文章

  • MySQL数据库踩过的一些坑

    在使用MySQL期间的一些问题 1.下载地址:https://cdn.mysql.com//Downloads/M...

  • Windows配置安装MySQl

    看了很多安装mysql教程,很多都会遇到一些问题,现将安装方法总结一下。 下载 在MySQL官网下载,Downla...

  • 关于mysql日志设置

    当你在在linux 中安装了mysql以后,难免会出现一些问题,例如当你Mysql出现启动,停止的时候出现的错误,...

  • Mycat 整合 MySQL 8.x 踩坑实践

    Mycat 目前还未全面支持MySQL 8以上的版本,可能会导致一些问题,例如Mycat连接MySQL 8时可能会...

  • MySQL跨版本主从部署及问题

    最近搞了个跨版本的MySQL主从同步,之前没搞过这个,遇到了一些问题,记录一下。 环境 主库:MySQL5.6.2...

  • 分析ElasticSearch的写入过程

    一些问题 从MySQL转做ES的时候,有一些问题比较困扰: 为什么es会丢数据; 什么样的节点可以是coordin...

  • MySQL一些问题

    追问 1:不引入两个日志,也就没有两阶段提交的必要了。只用 binlog 来支持崩溃恢复,又能支持归档,不就可以了...

  • MYSQL事务-隔离级别

    GIT还没有更新完成,最近因为工作原因要解决MYSQL的一些问题,转而开始重新学习MYSQL。本想把多版本并发控制...

  • Ubuntu18.04下安装mysql 5.7

    ubuntu 18.04安装mysql相较ubuntu 16.04会有一些问题出现,在此记录这一安装及配置过程。 ...

  • mysql 联合索引 复合索引(abc)如何索引命中规则实测

    可以略过 最近找工作面试时,被问及了mysql联合索引的一些问题,之前看过‘高性能mysql’中第五章关于索引的部...

网友评论

      本文标题:MySQL一些问题

      本文链接:https://www.haomeiwen.com/subject/qcgxjqtx.html