MySQL服务结构

实例=mysqld后台守护进程+Master Thread +干活的Thread+预分配的内存 公司=老板+经理+员工+办公室

连接层

验证用户的合法性(ip,端口,用户名)

提供两种连接方式(socket,TCP/IP)

验证操作权限

提供一个与SQL层交互的专用线程

SQL层

接受连接层传来的SQL语句

检查语法

检查语义(DDL,DML,DQL,DCL)

解析器,解析SQL语句,生成多种执行计划

优化器,根据多种执行计划,选择最优方式

执行器,执行优化器传来的最优方式SQL

提供与存储引擎交互的线程

接收返回数据,优化成表的形式返回SQL

将数据存入缓存

记录日志,binlog

存储引擎

接收上层的执行结构

取出磁盘文件和相应数据

返回给SQL层,结构化之后生成表格,由专用线程返回给客户端

MySQL逻辑结构

MySQL的逻辑对象:做为管理人员或者开发人员操作的对象

1.库

2.表:元数据+真实数据行

3.元数据:列+其它属性(行数+占用空间大小+权限)

4.列:列名字+数据类型+其他约束(非空、唯一、主键、非负数、自增长、默认值)

最直观的数据:二维表,必须用库来存放

mysql逻辑结构与Linux系统对比

MySQL的物理结构

MySQL的最底层的物理结构是数据文件,也就是说,存储引擎层,打交道的文件,是数据文件。

存储引擎分为很多种类(Linux中的FS)

不同存储引擎的区别:存储方式、安全性、性能

myisam:

mysql自带的表部分就是使用的myisam

innodb:

自己创建一个表,在编译的时候已经默认指定使用innodb

段、区、页(块)

段:理论上一个表就是一个段,由多个区构成,(分区表是一个分区一个段)

区:连续的多个页构成

页:最小的数据存储单元,默认是16k