《破壁 MySQL》 - MySQL 概述
在正式开始总结 MySQL 之前,先给大家介绍一下“破壁”是什么意思,很久之前我老大曾说过一句 “互联网本来没有什么行业壁垒,但是通过制造一些专业名词,人为的制造了很多行业壁垒出来”,我深以为然。
计算机的本质是 0 和 1,之后通过层层封装、抽象构建出了我们今天看到的互联网世界。
我不否认计算机中难度很高的知识,但是就我目前接触到的知识来说还没有到那种程度,我想这种可以称之为行业壁垒的核心知识占总知识量的 0.01%都不到,绝大多数人一生都不会遇到这些问题。
那么剩下的就是这一个一个人为制造的、可以通过花时间掌握的“行业壁垒”。
破壁的意思就是打破这些人为制造的“行业壁垒”,让我们技术人员人人如龙。
破壁系列的第一个专题我选择了互联网的数据存储基石 - MySQL。
这个专题将会总结事务、索引、SQL 性能优化、分库分表、主从复制等 MySQL 核心内容。详情参见下面的思维导图:
MySQL 是什么
MySQL 是一个免费、开源的关系型数据库管理软件,在互联网行业被广泛使用。
MySQL 架构
MySQL 中插件式存储引擎架构一直是其非常有特色的亮点,其灵活的处理方式,高度可定制化及完全开放的实现一直被很多高级用户所肯定,下图是官方文档中的一张架构图:
连接层:这一层主要是提供授权认证、连接处理等功能。
- 在该层上引入了线程池的概念,为通过安全认证的客户端请求提供线程。
- 在该层上也可以实现基于 SSL 的安全链接。
- 该层会为通过授权认证的客户端请求分配相应的权限。
服务层:这一层实现了很多核心功能,像查询解析、分析、优化、缓存、以及内置函数的实现等,所有跨存储引擎的功能也都在这一层实现,像触发器、存储过程、视图等。
引擎层:存储引擎负责的是 MySQL 中数据的存储和提取,服务器通过 API 与存储引擎进行通信。MySQL 中插件式存储引擎架构的特点,使得我们可以根据自己的实际需要进行存储引擎的选取。
存储层:将数据存储在文件系统上。
常见面试题:
>MySQL 的查询流程具体是?or 一条 SQL 语句在 MySQL 中如何执行的?
>介绍一下 MySQL 的架构
客户发起请求。
在连接层进行权限校验、线程分配。
查询缓存(存在缓存则直接返回,不存在则执行后续操作)
分析器(对 SQL 进行词法分析和语法分析操作)
优化器(主要对执行的 sql 优化选择最优的执行方案方法)
执行器(执行时会先看用户是否有执行权限,有才去使用这个引擎提供的接口)
去引擎层获取数据返回(如果开启查询缓存则会缓存查询结果)
MySQL 存储引擎
MySQL 中采用的是插件式存储引擎架构,可以根据需要选择不同的存储引擎。
现在互联网普遍使用的都是 InnoDB 存储引擎,常见的面试题是 InnoDB 存储引擎和 MyISAM 存储的对比,比如像下面这样问:
>Innodb 和 MyISAM 的区别是什么?
可以从如下的角度进行回答:
事务:InnoDB 支持事务,MyISAM 不支持事务
锁:InnoDB 支持行级锁,MyISAM 只支持表级锁
外键:InnoDB 支持外键
InnoDB 支持在线热备份
MyISAM 支持空间索引
小结
MySQL 是现在互联网大小厂主流使用的关系型数据库管理软件,平时工作中也是围绕着它进行开发,所以几乎是面试必考题。
这篇文章是《破壁》系列,第一个专题的第一篇文章。
文章中首先介绍了一下我接下来要写的内容(第一个专题 MySQL),其次是从技术原理和面试题两个角度介绍了 MySQL 架构和 MySQL 存储引擎。
参考资料
文章每周六持续更新,可以微信搜一搜「 荒古传说 」抢先阅读。
版权声明: 本文为 InfoQ 作者【haxianhe】的原创文章。
原文链接:【http://xie.infoq.cn/article/3bb392af105f1e2404b8d7730】。文章转载请联系作者。
评论