1.实例
1 2 3 4 5 |
1.MySQL的后台进程+线程+预分配的内存结构。 2.MySQL在启动的过程中会启动后台守护进程,并生成工作线程,预分配内存结构供MySQL处理数据使用。 3.什么是实例:一个进程 + 多个线程 + 一个预分配的内存空间 4.多实例:多个进程 + 多个线程 + 多个预分配的内存空间 |
2.MySQL服务程序结构
连接层
1 2 3 |
1.验证用户身份,验证用户名和密码是否匹配 2.提供了两种连接方式 3.连接层提供了一个与sql层交互的线程 |
SQL层
1 2 3 4 5 6 7 8 9 10 |
1.接收连接层传过来的sql语句 2.验证sql语句的语法 3.验证sql语句的语义(DDL,DQL,DML,DCL) 4.解析器:解析sql语句,生成执行计划 5.优化器:从执行计划中选择最优的一条 6.执行器:执行选出来的计划 1)与存储引擎层建立交互的线程 2)将要执行的sql语句传到存储引擎层 7.如果有缓存,读取缓存 8.记录binlog日志 |
存储引擎层
1 2 3 |
1.建立与sql交互的线程 2.接收sql层传来的sql语句 3.与磁盘交互,获取数据,并返回给sql层 |
3.mysql的逻辑结构
1 2 3 4 |
1.库 2.表:元数据+真实数据行 3.元数据:列+其它属性(行数+占用空间大小+权限) 4.列:列名字+数据类型+其他约束(非空、唯一、主键、非负数、自增长、默认值) |
4.MySQL物理结构
结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
1.MySQL的最底层的物理结构是数据文件,也就是说,存储引擎层,打交道的文件,是数据文件。 2.存储引擎分为很多种类(Linux中的FS) 3.不同存储引擎的区别:存储方式、安全性、性能 #myisam存储引擎 -rw-rw---- 1 mysql mysql 10684 Oct 19 17:09 user.frm -rw-rw---- 1 mysql mysql 488 Oct 20 18:28 user.MYD -rw-rw---- 1 mysql mysql 2048 Oct 20 18:28 user.MYI #innodb存储引擎 -rw-rw---- 1 mysql mysql 9230 Oct 19 17:09 slave_worker_info.frm -rw-rw---- 1 mysql mysql 98304 Oct 19 17:09 slave_worker_info.ibd #注意:建表或者库时名字一定都要是小写 |
MySQL存储物理大小
1 2 3 4 5 |
1.段:理论上一个表就是一个段,由多个区构成,(分区表是一个分区一个段) 2.区:连续的多个页构成 3.页:最小的数据存储单元,默认是16k 4.分区表:一个区构成一个段就是一个表 |