高性能MySQL之第一天: 逻辑架构设计

今天开始了深入MySQL的学习, 总不能只当一名CRUD BOY吧哈哈哈哈哈哈哈......所以抱着很强烈的冲劲深入MySQL, 希望能和大家一起努力, 变成更优秀的人!今天多学一门实用的技术, 明天少说一句求人的话, 那么让我们开始吧!


先附上一幅MySQL的逻辑架构图↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

高性能MySQL之第一天: 逻辑架构设计

 从上往下看, 可以分为四个层次

1. 连接层

    这是MySQL的最上层,主要用于对客户端的连接处理、认证等相关操作,通俗的来说就是你连接数据库的时候就是这一层在干活。在该层上引入了线程池的概念,即为通过认证安全接入MySQL的客户端提供线程。包含了socket通信和基于客户端/服务端的远程连接工具实现的类似tcp/ip的通信。

2. 服务层

主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,在该层,服务器会解析你输入的查询语句并创建响应的内部解析树,并对其完成相应的优化例如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作

听不懂? 举个例子给你 : 

SELECT * FROM table1, table2, table3 on table1.PRIMARY_KEY = table2.PRIMARY_KEY WHERE table3.KEY = 'DATA';

你觉得应该查询的表的顺序是table1, table2 ,table3, 但是, MySQL不一定就是按照这个顺序查询的, 它有自己的优化机制.

3. 引擎层

存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎由不同的功能,根据实际选取,主流的由MyISAM和InnoDB。

4. 存储层

数据存储层,主要是将数据存储在运行于裸设备的文件系统上,并完成与存储引擎的交互。通俗的来说就是把数据存储在你的电脑上.