首页 > 代码库 > MySQL 体系架构
MySQL 体系架构
MySQL 体系架构
本篇文章是对mysql体系结构进行了详细的分析介绍,需要的朋友参考下
上面一图是mysql的概览图,我们从上往下看, 我们把上面一图一分为二,我们可以吧它分为两个部分,
1,是connectors 的部分,即客户端部分
2,是大块的mysql server
把它个个部件拆开来看我们一个个来解析
1. connectors
指的就是mysql的客户端,
1. Management Serveices & Utilities:
这是mysql 的系统管理和控制工具,如bin 目录下的mysql,mysqldump,cluster 之类的东西
2. Connction pool
管理缓冲用户连接 ,线程处理等需要缓存的需求,他提供如下用能,
- authentication 验证机制,验证用户名,密码,Ip,权限
- Thread Reuse 分配线程.
- Connection Limits 链接限制(池子大小);
- Check Memory 检查连接池内存空间大小,如用了多少还剩多少,有多少个连接正在运行之类的检查
- caches 缓存池
4. SQL Interface: SQL接口。
接受用户的SQL命令,并且返回用户需要查询的结果。假如用户只需的是标准的SQL的话那必然会经过这一步,
它会对我们的命令 如 DML,DDL,Stored Procedure,Views,Triggers,etc 分解成一个个基本元素(也叫令牌,令牌环),然后把这些基本元素放到一个数据结构里面
5. Parser: 解析器。
- Query Transactional 查询事物
- Object Privilege 权限认证
6. Optimizer: 查询优化器。
我们队mysql进行优化有很大一部分是在这里进行 ,它这里做的无非就是对SQL进行优化,得到最佳的执行计划 ,
在这个里面呢它会确认我们的
- access paths连接通道,
- statistics 采集我们的统计信息
-- 而得到最佳的执行计划
SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是“选取-投影-联接”策略进行查询。
用一个例子就可以理解: select uid,name from user where gender = 1;
这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤
这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤
将这两个查询条件联接起来生成最终查询结果
7. Cache和Buffer: 查询缓存。
如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。
这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等
8. Engine :存储引擎。
存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。
Mysql的存储引擎是插件式的。它根据MySql AB公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)
现在有很多种存储引擎,各个存储引擎的优势各不一样,最常用的MyISAM,InnoDB,BDB
如:
MyISAM引擎,它查询速度快,有较好的索引优化和数据压缩技术。但是它不支持事务。
InnoDB支持事务,并且提供行级的锁定,应用也相当广泛。
Mysql也支持自己定制存储引擎,甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。
9. 文件系统和日志系统
MySQL 体系架构