MySQL逻辑架构
1. 逻辑结构
1) 结构图如下
2) 连接/线程处理:大多基于网络客户端/服务器的工具或服务都有类似的.主要用作连接处理,授权认证,安全等
3) 第二层:大多MySQL核心服务在此层,包括:查询解析,分析,优化,缓存,内置函数(日期,时间,数学,加密函数),跨存储引擎的功能(存储过程,触发器,视图等)
4) 第三层包含了存储引擎:
a 存储引擎负责数据的存储和提取
b 服务器通过API与存储引擎通信
c 存储引擎API包含几十个底层函数,如开启一个事务,根据主键提取一行记录等
d 存储引擎不会解析SQL(InnoDB例外,它会解析外键,MySQL服务器本身没有实现该功能)
e 不同存储引擎间不会相互通信,只简单响应上层服务器请求
2. 连接管理与安全性
1) 每个客户端连接都会在服务器进程有一个线程,这个连接的查询只会在单独的线程中执行,该线程只能轮流在某个CPU核心或CPU中运行
2) MySQL5.5开始支持线程池插件,因此服务器会负责线程缓存,也不需要为每个新建连接创建和销户线程
3) 客户端连接服务器是需要认证
a 基于用户名,密码,原始主机信息认证
b 如使用安全套接字(SSL)方式连接,可以使用X.509证书认证
c 认证成功后会根据相应用户权限执行允许的功能
3. 优化与执行
1) 优化包含重写查询,决定表读取顺序,选择合适索引等
a 用户可以通过关键字提示(hint)优化器,影响它的决策过程
b 可以请求优化器解释(explain)优化过程的各个因素,以此作为参考来重构查询和Schema,修改配置
c 优化器不关心使用什么存储引擎,但存储引擎对优化查询是有影响的.优化器会请求存储引擎提供容量或某个操作的开销信息,表数据统计信息等
对Select语句,会先查询缓存,若有对应查询就不再进行解析,优化,执行的整个过程,直接返回查询缓存里的结果集