3分钟学会mysql数据库的逻辑架构原理

210 阅读3分钟

这篇文章主要是从mysql数据库的逻辑架构来认识掌握mysql的原理。只要是稍微有一点计算机的相关知识相信都能看明白。

一、笼统的逻辑架构

先给出一张逻辑架构图,这张图是让你从宏观的角度来分析认识一下。

从这张图你可以获取到如下的信息:

(1)mysql架构大致上可以划分为四层。

(2)第一层,主要是不同客户端的连接。

(3)第二层,主要是处理客户端的连接。

(4)第三层,处理客户端的sql语句。

(5)第四层,存储引擎真实的执行sql语句。

现在你已经了解了mysql的整体架构,而且也大致明白了每一层是干嘛的,现在我们把目光逐渐细化,毕竟上面这张图还是太笼统。

二、细化的逻辑架构图

看下面这张图。

这张图相比较前面那张图就细化了一部分,从上到下还是分为了四层,

**第一层:**在这里我们可以看出,连接的客户端有很多,PHP、python、jdbc等等都有。

**第二层:**这一层是链接层,对应于第一张图的连接处理层,主要是处理客户端的连接,这是因为客户端很多种类很多。

**第三层:**这一层是服务层。主要是处理客户端请求的sql语句,如何处理呢?大致流程就是,先查询缓存,如果缓存有,那就直接拿出来返回。如果没有那就解析器解析,然后优化器优化,各个存储引擎提供的功能都集中在这一层,如存储过程,触发器,视图等。

**第四层:**这一层是引擎层,在这里我们可以看到有好几种不同的存储引擎,比如InnoDB,MyISAM,memory等等。真正负责MySQL中数据的存储和提取。

假如说我们使用jdbc执行一条插入的sql语句,整个流程是如何执行的呢?

首先,jdbc属于第一层,通过第二层的连接处理连接到mysql服务器,接下来,通过解析器对sql语句进行解析,然后再通过优化器对sql语句进行优化,最终调用第四层的存储引擎的接口,执行插入语句,将数据插入到文件或者是其他文件系统上。

是不是很简单。通常在学习mysql的时候,老师都会介绍到存储引擎。那时候可能你还没有注意到他的重要性,现在相信你应该体会到了。也就是说服务层的那些功能,都是由存储引擎提供的。不同的存储引擎提供的可能是不一样的。如何去比较这些存储引擎呢?我们列了一些指标去对比一下:

功能 MylSAM MEMORY InnoDB Archive
存储限制 256TB RAM 64TB None
支持事务 No No Yes No
支持全文索引 Yes No No No
支持树索引 Yes Yes Yes No
支持哈希索引 No Yes No No
支持数据缓存 No N/A Yes No
支持外键 No No Yes No

对于mysql数据库来说,默认的就是InnoDB,它不能支持哈希索引还有全文索引。因此如果有一天你不喜欢它了也可以去更换,语句就是SET default_storage_engine=< 存储引擎名 >。