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
Comments | NOTHING