一.Mysql的两层架构:
1.SQL Layer():除了处理底层数据的所有功能,包括权限判断,sql解析,执行计划优化,query cache等
子模块:1.初始化模块:Mysql Server启动时整个系统的初始化
2.核心API:对底层操作的优化,
3.网络交互模块:(实现底层交互的api)
4.Client&Server:实现客户端与Mysql交互的协议
5.用户模块:(实现连接权限控制,及用户授权)
6.访问控制模块:(根据用户授权信息,控制用户可以访问的操作)
7.连接管理,连接线程和线程管理:(监听用户的连接请求,转发到连接线程模块)
8.Query的解析和转发模块
9.Query cache模块:(缓存,提高性能)
10.Query 优化器模块:(优化请求)
11.表变更管理模块:(DML和DDL)
12.表维护模块:(表的状态检查,错误修复)
13.系统状态管理模块:(用于客户端请求系统参数时,返回用户系统参数)
14.表管理器:()
15.日志记录模块
16.复制模块:
17.存储引擎接口模块:(实现了存储引擎插件式管理)
2.Storage Engine Layer(存储引擎层):实现底层数据的操作,由多种存储引擎组成
二.存储引擎
1.MyISAM存储引擎:这种引擎的表在数据库中,每个表被存放在三个以表命名的物理文件
分别是存储表结构定义信息的.frm文件,存放数据的.MYD文件,存放索引的.MYI文件
MyISAM支持下面三种索引:
a.B-Tree索引(最常用的)
b.R-Tree索引(很少使用)
c.Full-text索引:全文索引,存储结构也是B-tree
数据存放的的.MYD文件,存放数据的格式有:(创建表时,可自己选择是否压缩,默认不压缩)
a.静态固定长度
b.动态可变长度
c.压缩
2.Innodb存储引擎
特点:
1.支持事务(实现了4个隔离级别)
2.数据的多版本读取
3.锁定机制的改进(通过索引,实现行锁)
4.实现了外键
物理结构:
第一部分:数据文件(表数据及索引数据)
第二部分:日志文件
3.NDB Cluster存储引擎(在无共享存储设备的情况下,实现存储)
(用于Mysql的分布式集群环境)
Mysql Cluster的环境组成:
a.负责管理各个节点的Manage节点主机(必须最先启动,集群的配置,启动关闭各个节点)
b.SQL层的SQL服务器节点(连接管理,query优化,cache)(不需要提供存储引擎)
c.Storage层的NDB数据节点,(实现底层的数据存储功能)