haxianhe's blog

《破壁MySQL》 - MySQL概述

字数统计: 1.2k阅读时长: 4 min
2021/01/09 Share

文章每周六持续更新,可以微信搜一搜「 荒古传说 」抢先阅读。

在正式开始总结MySQL之前,先给大家介绍一下“破壁”是什么意思,很久之前我老大曾说过一句 “互联网本来没有什么行业壁垒,但是通过制造一些专业名词,人为的制造了很多行业壁垒出来”,我深以为然。

计算机的本质是0和1,之后通过层层封装、抽象构建出了我们今天看到的互联网世界。

我不否认计算机中难度很高的知识,但是就我目前接触到的知识来说还没有到那种程度,我想这种可以称之为行业壁垒的核心知识占总知识量的0.01%都不到,绝大多数人一生都不会遇到这些问题。

那么剩下的就是这一个一个人为制造的、可以通过花时间掌握的“行业壁垒”。

破壁的意思就是打破这些人为制造的“行业壁垒”,让我们技术人员人人如龙。


破壁系列的第一个专题我选择了互联网的数据存储基石 - MySQL。

这个专题将会总结事务、索引、SQL性能优化、分库分表、主从复制等MySQL核心内容。详情参见下面的思维导图:

MySQL 是什么

MySQL 是一个免费、开源的关系型数据库管理软件,在互联网行业被广泛使用。

MySQL 架构

MySQL中插件式存储引擎架构一直是其非常有特色的亮点,其灵活的处理方式,高度可定制化及完全开放的实现一直被很多高级用户所肯定,下图是官方文档中的一张架构图:

  • 连接层:这一层主要是提供授权认证、连接处理等功能。

    • 在该层上引入了线程池的概念,为通过安全认证的客户端请求提供线程。
    • 在该层上也可以实现基于SSL的安全链接。
    • 该层会为通过授权认证的客户端请求分配相应的权限。
  • 服务层:这一层实现了很多核心功能,像查询解析、分析、优化、缓存、以及内置函数的实现等,所有跨存储引擎的功能也都在这一层实现,像触发器、存储过程、视图等。

  • 引擎层:存储引擎负责的是MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。MySQL中插件式存储引擎架构的特点,使得我们可以根据自己的实际需要进行存储引擎的选取。

  • 存储层:将数据存储在文件系统上。

常见面试题:

MySQL 的查询流程具体是?or 一条 SQL 语句在 MySQL 中如何执行的?
介绍一下 MySQL 的架构

  1. 客户发起请求。
  2. 在连接层进行权限校验、线程分配。
  3. 查询缓存(存在缓存则直接返回,不存在则执行后续操作)
  4. 分析器(对SQL进行词法分析和语法分析操作)
  5. 优化器(主要对执行的sql优化选择最优的执行方案方法)
  6. 执行器(执行时会先看用户是否有执行权限,有才去使用这个引擎提供的接口)
  7. 去引擎层获取数据返回(如果开启查询缓存则会缓存查询结果)

MySQL 存储引擎

MySQL中采用的是插件式存储引擎架构,可以根据需要选择不同的存储引擎。

现在互联网普遍使用的都是 InnoDB 存储引擎,常见的面试题是 InnoDB 存储引擎和 MyISAM 存储的对比,比如像下面这样问:

Innodb 和 MyISAM 的区别是什么?

可以从如下的角度进行回答:

  • 事务:InnoDB 支持事务,MyISAM 不支持事务
  • 锁:InnoDB 支持行级锁,MyISAM 只支持表级锁
  • 外键:InnoDB 支持外键
  • InnoDB 支持在线热备份
  • MyISAM 支持空间索引

小结

MySQL 是现在互联网大小厂主流使用的关系型数据库管理软件,平时工作中也是围绕着它进行开发,所以几乎是面试必考题。

这篇文章是《破壁》系列,第一个专题的第一篇文章,下面是本系列的其他文章,欢迎阅读~

文章中首先介绍了一下我接下来要写的内容(第一个专题 MySQL),其次是从技术原理和面试题两个角度介绍了 MySQL 架构和 MySQL 存储引擎。

参考资料


文章每周六持续更新,可以微信搜一搜「 荒古传说 」抢先阅读。

CATALOG
  1. 1. MySQL 是什么
  2. 2. MySQL 架构
  3. 3. MySQL 存储引擎
  4. 4. 小结
  5. 5. 参考资料