MySQL体系结构详讲
一:解读官方文档提供的MySQL架构图
MySQL体系结构:连接层、服务层、引擎层、存储层
1)连接层:
主要职责:身份认证,连接管理,获取权限信息
1、客户端访问MySQL第一件事就是通过三次握手与服务端建立TCP连接。服务端会有TCP线程池,当收到连接请求后会分配一个线程专门对接这个客户端。
2、连接成功后,MySQL服务器对TCP中客户端传输过来的账号密码进行身份认证、权限获取。
3、若是用户名/密码不对,服务端会收到Access denied for user 错误,客户端则执行结束;
#用户名、密码认证通过后,服务端会从权限表中查出账号的权限并与客户端连接,后面会根据读到的权限进行权限判断逻辑;
2)服务层:
服务层主要完成大多数的核心服务功能:
1)SQL接口(Interface):接收SQL指令,返回查询结果;
2)解析器(Parser):解析输入的SQL语句,将SQL语句解析成MySQL服务器能认识的语言;
3)优化器(Optimizer):优化SQL,MySQL会选择自己认为最优的方式(不是程序员认为最优的方式)执行解析后的SQL语句;
4)缓存(Caches):缓存执行的SQL的查询等结果,不同客户端之间可共享查询缓存。(缓存包括:表缓存、记录缓存、key缓存、权限缓存等)
3)引擎层面:
存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过AP和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要选择合适的存储引擎。
4)储存层:
主要是将数据储存在文件系统之上,并完成与储存引擎的交互(所有的数据、数据库、表的定义,表的内容、索引,都是存储在文件系统上,以文件的方式存在并完成与存储引擎的交互。)【关于常见存储引擎的特点,比较和如选择,在我的主页的MySQL高级里有相应的文章,有兴趣可以阅读,谢谢!】