vlambda博客
学习文章列表

面试官让我聊聊Mysql基础架构

Mysql逻辑架构图

面试官让我聊聊Mysql基础架构

连接器(Connectors)

Mysql与不同语言的连接管理

连接池(Connection Pool)

用户管理缓冲用户的连接

系统管理和控制工具(Management Serveices & Utilities)

SQL接口(SQL Interface)

接受用的SQL,如DML,DDL

解析器(Parser)

解析SQL,词法解析、语法解析

优化器(Optimizer)

对SQL进行优化,如组合索引的顺序优化、jion驱动表的优化

查询缓存(Caches&Buffers)

对查询结果进行缓存,下次相同的查询直接从缓存中取,使用SQL的hash值作为唯一key

存储引擎

常用存储引擎为InnoDB、MyIsam、Memory

文件系统

数据文件、日志文件,Mysql的数据和索引是以文件的形式存储在磁盘上的

Mysql存储引擎

InnoDB

常用存储引擎,Mysql5.5版本之后默认使用的存储引擎,支持行锁、事务、崩溃修复能力、多版本并发控制,对于事务要求比较高的表、频繁删除、更新的操作的表使用该存储引擎

MyIsam

不支持锁、事务,比较高的读写效率,对于需要频繁插入、读取的操作且对事务无要求的表可以使用该存储引擎

Memory

内存存储,拥有极高的拆入,更新和查询效率。重启之后数据丢失,对于临时表可以使用该存储引擎

查看存储引擎:

mysql> show engines;

可以看到mysql所有的存储引擎,默认为InnoDB

InnoDB和MyISAM的区别:


InnoDB

MyISAM

存储文件

.frm 表定义文件

.ibd 数据文件和索引文件

.frm 表定义文件

.myd 数据文件

.myi 索引文件

表锁、行锁

表锁

事务

支持

不支持

外键

支持

不支持

count

扫表

有存储数量的地方

注意,同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数 据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY 存储引擎。

执行流程

下一篇将会介绍流程的具体细节与日志文件