了解和掌握MySQL已经成为当下程序员的必备技能之一,本文将带你了解MySQL的基础架构,接下来我们从一条SQL查询执行过程来展开。
select * from tmp where id=1;
我们输入这样的一条语句在MySQL内部需要经历怎么样的流程呢?
这是一张MySQL的逻辑架构图,大体上MySQL分为两层:Server层和引擎层。
Server层
Server层主要包含:连接器,查询缓存,分析器(解析器),优化器,执行器等模块;各模块的具体功能如下:
连接器:主要负责管理连接,权限验证等功能
查询缓存:缓存查询结果,如果可以命中则直接返回,不执行后续操作
分析器(解析器):对SQL语句进行词法以及语法分析工作
优化器:生产执行计划,进行索引的选择
执行器:负责与引擎层交互,返回执行结果
TIPS:
MySQL 8.0版本直接将查询缓存的整块功能删掉了,也就是说8.0开始彻底没 有这个功能了
引擎层
引擎层则包含各种各样的引擎,例如:InnoDB,Myisam,Memory等等。它们各有特点。
我们常见的主要是InnoDB,MyISAM;如下是它们的对比图:
属性 | InnoDB | MyISAM |
---|---|---|
ACID事务 | 支持 | 不支持 |
崩溃恢复 | 支持 | 不支持 |
锁粒度 | 行锁 | 表锁 |
MVCC | 支持 | 不支持 |
外键 | 支持 | 不支持 |
文件结构 | .frm,.idb | .frm,.MYI,.MYD |
-
InnoDB支持ACID事务,而MyISAM不支持
-
InnoDB支持崩溃恢复,而MyISAM不支持
-
InnoDB支持MVCC,而MyISAM不支持
-
InnoDB支持外键,而MyISAM不支持
-
InnoDB的锁粒度可以支持行锁,而MyISAM仅支持到表锁
-
InnoDB的文件结构包含 .frm(表结构文件),.idb(数据以及索引文件)
-
MyISAM 的文件结构包含 .frm(表结构文件),.MYI(索引文件),.MYD(数据文件)
本篇内容旨在帮助大家对MySQL的逻辑架构以及存储引擎有个简单了解,后续会在次基础上逐步展开,也请大家关注后续更新。
- 本文链接: https://www.sunce.wang/archives/mysql-xi-lie-yi--yi-tiao-cha-xun-yu-ju-de-zhi-xing-liu-cheng-
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!