一、Mysql的架构
(1) Mysql向外提供的交互接口(Connectors)
Connectors组件,是MySQL向外,是MySQL向外提供的交互组件,如java,.net,php等语言可以通过该组件来操作SQL语句,实现与SQL的交互。
(2)连接池组件(Connection pool)
负责监听对客户端向MySQL Server端的各种请求,接受请求,转发请求到目标模块,每个成功连接MySQL Server的客户请求都会被创建或分配一个线程,该线程负责客户端与MySQL Server端的通信,接受客户端发送的命令,传递服务端的结果信息
(3) 管理服务组件和工具组件(Management Service & Utilities)
提供对MySQL的集成管理,如备份(BackUp),恢复(Recovery),安全管理(Security)等
(4)SQL接口组件(SQL Interface)
接受用户SQL命令,如DML,DDL和存储过程等,并将最终结果返回给用户。
(5)查询分析器组件(Parser)
这里主要的对传过来的sql字符串进行解析,比如我们一开始接触的jdbc编程,就是将字符串类型的sql语句发送到mysql里,然后解析器首先对sql语句进行词法分析,形成语法树,接着再对语法树进行语法分析,看各个分词是否符合SQL92标准,符合的话再执行下一环节业务处理。
查询分析SQL命令语法的合法性,并尝试将SQL命令分解成数据结构,若分解失败,则提示SQL语句不合理。
(6)优化器组件(Optimizer)
对SQL命令按照标准流程进行优化分析.
查询优化器根据传过来的SQL语句,进行分析判断是否是最优的执行语句,主要针对一下三个方面进行分析:
使用哪一个索引(一个表有若干个索引,选择过滤力度最大的那个)
多表关联的表连接顺序
* WHERE条件的先后顺序(根据MYSQL最左前缀原则,会重新摆放条件顺序)
(7)缓存主件(Caches & Buffers)
缓存和缓冲组件<br />MYSQL会将每一条SQL进行hash处理后将hash值放到一个map中,每次有SQL来时先计算SQL的hash值,比较是否相同,相同的话可以执行内存的SQL,而不必对新的SQL语句进行解析、优化等操作,加快执行效率。
(8)MySQL存储引擎
1.什么是MySQL存储引擎
MySQL属于关系型数据库,而关系型数据库的存储是以表的形式进行的,对于表的创建,数据的存储,检索,更新等都是由MySQL<br />存储引擎完成的,这也是MySQL存储引擎在MySQL中扮演的重要角色。<br /> 研究过SQL Server和Oracle的读者可能很清楚,这两种数据库的存储引擎只有一个,而MySQL的存储引擎种类比较多,如MyISAM存储<br />引擎,InnoDB存储引擎和Memory存储引擎.<br /> MySQL之所以有多种存储引擎,是因为MySQL的开源性决定的。MySQL存储引擎,从种类上来说,大致可归结为官方存储引擎和第三<br />方存储引起。MySQL的开源性,允许第三方基于MySQL骨架,开发适合自己业务需求的存储引擎。
2、MySQL存储引擎作用
MySQL存储引擎在MySQL中扮演重要角色,其作比较重要作用,大致归结为如下两方面:
作用一:管理表创建,数据检索,索引创建等
作用二:满足自定义存储引擎开发。
3.MySQL引擎种类
不同种类的存储引擎,在存储表时的存储引擎表机制也有所不同,从MySQL存储引擎种类上来说,可以分为官方存储引擎和第三方存储引擎。
当前,也存在多种MySQL存储引擎,如MyISAM存储引擎,InnoDB存储引擎,NDB存储引擎,Archive存储引擎,Federated存储引擎,Memory
存储引擎,Merge存储引擎,Parter存储引擎,Community存储引擎,Custom存储引擎和其他存储引擎。
其中,比较常用的存储引擎包括InnoDB存储引擎,MyISAM存储引擎和Momery存储引擎。