简单了解MySQL架构
# 第一层连接层
最上层是一些客户端和连接服务,包含本地sock通信和基于客户端、服务端工具实现的类似于tcp/ip通信。主要完成一些类似于连接处理,授权认证,及相关安全方案。在该层引入线程池概念。为通过认证安全接入的客户端提供线程。同样在该层可以实现基于SSL的安全链接,服务器也会为安全接入的每个客户端验证它具有操作权限。
# 第二层服务层
第二层架构主要完成大多核心功能:SQL接口,缓存查询,SQL的分析和优化及部分内置函数执行,所有跨存储引擎工鞥呢也在这一层,如过程,函数等。在该层服务器会解析查询并创建响应的内部解析树,并对其完成相应的优化如确定查询表顺序。是否否利用索引等。最后生成相应执行操作。如果select语句,服务器还会查询内部的缓存,如果缓存空间足够大。这样在解决大量读操作环境中能够很好的提升系统性能。
Connection Pool连接池
Management Services & Utillties 包括备份,容灾恢复,安全,复制,集群
SQL Interface SQL接口
Parser 解析 通过select,insert命令解析相应操作
Optimizer sql优化器,mysql自己认为最优的优化。因为做sql验证,至少执行2次。在极端情况下,把此步操作省略,可加快速度。
Caches & Buffers 缓存和缓冲
# 第三层:可拔插组件的引擎。
绝大部分公司使用MyISAM,InnoDB
存储引擎层,存储引擎真正的负责MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信,不同的存储引擎具有功能不同,这样我们可以根据自己的实际需要进行选取。
# 第四层:文件存储层
数据存储,主要将数据存储在运行于裸设备的文件系统智商,并完成与存储引擎的交互
# 总结:
插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务选择相应存储引擎。
-
查看引擎:
show engines;
-
查看默认存储引擎:
show variables like "%storage_engine%";
-
InnoDB与MyISAM引擎区别