MySQL系统讲座一:MySQL DB 引擎的演化和对比 && MySQL Query和Schema Migration的介绍

本周我们正式开始尝试了MySQL的系列讲座,感谢Richard和Rick分别给我们带来了《MySQL DB 引擎的演化和对比》 和《MySQL Query和Schema Migration的介绍》,相关的总结如下:

Slides

  1. Richard使用的slides
  2. Rick使用的Slides
  3. MySQL系列讲座第一讲总结:MySQL DB 引擎的演化和对比 && MySQL Query和Schema Migration的介绍
  4. MySQL系列讲座第二讲总结:MySQL存储引擎的深入介绍
  5. MySQL系列讲座第三讲总结:MySQL的事务介绍
  6. MySQL系列讲座第四讲总结:MySQL锁的介绍 && MySQL主从一致,高可用以及如何实现数据不丢失
  7. MySQL系列讲座第五讲总结:MySQL主从一致 && MySQL读写分离实操
  8. MySQL系列讲座第六讲总结:Distributed MySQL
  9. MySQL系列讲座第七讲总结:Uber是如何选择在Postgres和MySQL之间切换的

Q&A

感谢张程帮忙做的总结。

感谢Nancy提供的笔记供参考。

B+树是否都在内存中?

  1. 总得来说,索引数据的量也是比较大的,所以一般并不是存储在内存中的,都是直接存储在磁盘中的,所以对磁盘中的文件内容进行读取,免不了要进行磁盘IO。如果索引文件很大的话,并不能一次都加载进内存,所以在使用索引进行数据查找的时候是会进行多次磁盘IO,将索引数据分批的加载到内存中,因此一个好的索引的数据结构,在得到正确的结果前提下,一定是磁盘IO次数最少的。
  2. 【扩展】MySQL的索引为什么用B+ Tree?很详细介绍了B+ Tree,以及MySQL为什么使用它,并比较了InnonDB和MyISAM的不同。
  3. 【扩展】为什么 MySQL 使用 B+ 树
  4. 【扩展】数据库-MySQL,很详细的介绍

Page中数据是否一定有序?

  1. MySQL中存储数据的最小单元是page(页),默认大小为16KB,也就是说一个page可以存储多个数据。User Records:用户真正的数据存储区域,这里真正存放用户的行数据,它占据了整个page页的大部分空间。以单链表的形式存储一条条行记录。他们在物理上不一定是有序的,可能刚开始是有序的,但是随着增删改的操作可能就无序了,但是在逻辑上是有序的
  2. 【扩展】MySQL中的page页详解,很详细介绍了MySQL中的page页面。
  3. 【扩展】MySQL 页完全指南——浅入深出页的原理,很不错的总结。
  4. 【扩展】MySQL系列(4)— InnoDB数据页结构,这个系列还是不错。

Undo Log在MySQL中是如何工作的?

  1. Undo log的存储由InnoDB存储引擎实现,数据保存在InnoDB的数据文件中。在InnoDB存储引擎中,undo log是采用分段(segment)的方式进行存储的。rollback segment称为回滚段,每个回滚段中有1024个undo log segment。
  2. 【扩展】MySQL回滚日志(undo log)总结,详细介绍了undo log的各个方面。
  3. 【扩展】MySQL (七) | 详细分析MySQL事务日志 undo log
  4. 【扩展】MySQL · 引擎特性 · InnoDB undo log 漫游,源代码级别的分析,很不错的文章。就是版本相对老了一点。
  5. 【扩展】InnoDB:undo log(1),同样是源代码级别的分析。

为什么有了WAL还要Double Write

  1. 【扩展】MySQL InnoDB: Differences between WAL, Double Write Buffer, Log Buffer, Redo Log,Stack OVerflow上关于这个问题的讨论。
  2. 【扩展】讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术
  3. 【扩展】【MySQL】double write 浅析,对double write进行了比较深入的介绍。

一些扩展问题和思考

  1. MySQL的query cache是什么?官网关于MySQL Query Cache的介绍。
  2. LSM Tree是不是主要用在No SQL DB上面?可以参考这篇文章《LSM-tree 基本原理及应用》。
  3. MySQL和Postgres的硬核比较,可以参考PostgreSQL和MySQL到底选哪一个?这个对比表格让你做下决定!
  4. Cassandra已经慢慢被淘汰了,因为它不太适用于facebook以外的公司的使用场景?一篇介绍Uber否决Cassandra的文章
  5. MySQL为什么不推荐使用UUID? 记一次生产事故及分析MySQL为什么不推荐使用UUID或雪花id作为主键
  6. MySQL如何高效进行随机读取?可以参考这篇文章
  7. 照例附上东哥带货文章一篇,哈哈

再次感谢大家的参与,也希望大家有好的资源能联系我更新这篇文章。谢谢大家。

下周话题安排和往期话题回顾敬请参见《系统设计开荒小分队话题讨论简介

You may also like...

7 Responses

  1. February 14, 2022

    […] 我们上次MySQL的讨论总结。 […]

  2. February 20, 2022

    […] MySQL系列讲座第一讲总结:MySQL DB 引擎的演化和对比 && MySQL Query和Schema Migration的介绍 […]

  3. March 1, 2022

    […] MySQL系列讲座第一讲总结:MySQL DB 引擎的演化和对比 && MySQL Query和Schema Migration的介绍 […]

  4. March 8, 2022

    […] MySQL系列讲座第一讲总结:MySQL DB 引擎的演化和对比 && MySQL Query和Schema Migration的介绍 […]

  5. March 16, 2022

    […] MySQL系列讲座第一讲总结:MySQL DB 引擎的演化和对比 && MySQL Query和Schema Migration的介绍 […]

  6. March 24, 2022

    […] MySQL系列讲座第一讲总结:MySQL DB 引擎的演化和对比 && MySQL Query和Schema Migration的介绍 […]

  7. April 5, 2022

    […] MySQL系列讲座第一讲总结:MySQL DB 引擎的演化和对比 && MySQL Query和Schema Migration的介绍 […]

Leave a Reply

Your email address will not be published.