在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、存储引擎 上节我们最后说到,SQL 的执行计划是执行器组件调用存储引擎的接口来完成的。 那么 MySQL 有哪些存储引擎呢? 主要有 MyISAM、InnoDB、Memory等等。而现在互联网中,基本都是使用 InnoDB 存储引擎,所以接下来我将简单总结自己关于 InnoDB 存储引擎的学习,比较简单的介绍 InnoDB 存储引擎里面的组件。 二、缓冲池 我们现在都知道了,数据库的数据是存放在磁盘文件中的。 答案:不是的! 因为磁盘文件的随机读写的性能是非常差的,如果所有操作都在磁盘中进行,那么就不会有高性能 MySQL 的说法了,MySQL 也不能支持高并发,也不会在互联网中如此的流行。 这时候要引入 InnoDB 存储引擎最重要的一个组件,就是 缓冲池(Buffer Pool) 的使用原理: 我们先复习一下 MySQL 接收请求的过程。 ①、MySQL 的工作线程专门监听数据库连接池的连接,有连接就获取连接中的 SQL 语句。 上面是上篇文章总结到的东西,那么存储引擎的接口是怎么进行增删改查的呢?以更新操作为例,其他的同理。 三、undo 日志文件 我们都知道,在事务中,事务提交前是可以随时回滚对数据的更新的。那么是依靠什么来做的呢? 依靠的是 undo 日志文件的使用原理: 更新数据为例: 四、redo log buffer 上面说到,所有的增删改查操作其实是在缓冲池里面进行的,所以其实对数据的修改并没有立刻落实到磁盘文件里面。 那么有一个问题:在缓冲池的脏数据刷回磁盘文件中前,MySQL 宕机了怎么办? redo log buffer 的使用原理: 还是以上面的更新操作为例,当数据更新后,会记录下数据更新的的关键信息,对应的就是 redo 日志,然后写入 但是还是会有一个问题,上面说到, 所以, 总结 以上所述是小编给大家介绍的MySQL 学习总结 之 初步了解 InnoDB 存储引擎的架构设计,希望对大家有所帮助! |
请发表评论