《从零开始带你成为MySQL实战优化高手》中Mysql架构和InnoDB存储引擎,在本次分享开始前先尝试思考如下几个常见的面试题:
1.undo log和redo log了解过吗?它们的作用分别是什么?
2.redo log是如何保证事务不丢失的?
3.mysql的事务是先提交还是先刷盘?
4.更新操作为什么不直接更新磁盘反而设计这样一个复杂的InnoDB存储引擎来完成?
我相信这些面试题应该是现在普遍的互联网必问,缺一不可的 “考点”,这次分享,彻底带大家吃透此内容。希望可以帮助到各位儒猿群友!
先整体看下本次分享的Mysql架构和InnoDB存储引擎流程图是怎么样的:
流程图解析:这一共分为四个步骤。
(1)前台操作触发Mysql服务器执行请求
(2)InnoDB存储引擎-缓冲池中完成更新的基本操作
(3)Redo Log和BinLog保证事务的可靠性
(4)将事务的操作持久化
下面一步一步来解析这些部分。
一: 前台操作触发Mysql服务器执行请求
前台用户各种操作触发后台sql执行,通过web项目中自带的数据库连接池:如dbcp、c3p0、druid等,与数据库服务器的数据库连接池建立网络连接;
数据库连接池中的线程监听到请求后,将接收到的sql语句通过SQL接口响应给查询解析器,查询解析器将sql按照sq