mysql架构与历史
1.逻辑架构
1.1 第一层服务
最上层服务主要负责连接处理、授权认证、安全等,并非mysql独有功能,大部分基于网络的客户端/服务器的工具都有此功能。
1.1.1 连接管理与安全性
每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在cpu核心或者cpu中运行。服务器会负责缓存线程,因此不需要为每一个新建的连接创建或者销毁线程(mysql5.5及以上版本支持线程池插件)。
当应用连接到服务时,服务器需要对其进行认证。认证基于原始主机信息和密码。连接成功后会验证该应用是否有执行某个操作的权限。
1.2 第二层服务
第二层时mysql的核心服务层,包括查询解析、分析、优化、缓存以及所有的内置函数,所有的跨存储引擎功能都在这一层实现:存储过程、触发器、视图等。
1.2.1 优化和执行
mysql会解析查询,并创建内部数据结构,然后对其进行各种优化,如:重写查询、决定表的读取顺序、选取合适的索引等。用户可以通过特殊的关键字提示优化器,影响它的决策过程。也可以请求优化器解释(explain)优化的过程,使用户了解优化器如何进行决策,并提供一个基准参考。
优化器并不关心表使用的存储引擎,但是存储引擎对优化查询时有影响的。优化