第三章 体系结构和物理存储结构
1,体系结构
1.1,连接方式(c/s结构)
#TCP模式
远程或本地 mysql -uroot -pxxxxx -h ipaddress -P3306
#Socket模式
本地 mysql -uroot -pxxxxx -S /tmp/mysql.sock
1.2,实例介绍
#实例=mysqld后台守护进程+Master Thread +干活的Thread + 预分配的内存
#如:公司=老板+经理+员工+办公室
1.3,MySQL的程序结构
一条SQL语句的执行过程
#连接层
1. 提供链接协议:TCP、Socket
2. 提供验证:用户、密码、IP、Socket
3. 提供专业链接线程:接收用户SQL,返回结果
注:通过下面的语句可以查看链接线程的基本情况
mysql> show processlist;
#SQL层(重点)
1,接受上传传输来的SQL语句
2,语法验证模块,验证SQL语句的语法
3,语义检查:判断SQL语句类型
(1)DDL
(2)DQL
(3)DML
(4)DCL
4,权限检查:用户对库,表有没有权限
5,解释器:进行SQL语句的预处理,生成解析树(执行计划)
6,优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划
代价模型:资源(CPU、IO、MEM)的损耗评估性能好坏
7, 执行器:根据最优执行计划,执行SQL语句,产生执行结果。
执行结果:在磁盘的XXXXX位置上
8,提供查询缓存(默认是没有开启的),会使用redis tai 替代查询缓存功能
9,提供日志记录(详见日志管理章节),默认没有
#存储引擎层
类似于Linux中的文件系统
负责根据SQL层的执行结果,从磁盘上拿数据。
将16进制的磁盘数据,交由SQL层结构化为表。
连接层的专用线程将其返回给用户。
1.4,逻辑结构
库:
- 库名
- 库属性(权限,数据类型等等)
表:
-
表名
-
属性
-
行(记录)
-
列(字段)
- 列名
- 属性(类型,长度,约束等等)
2,物理存储结构
1,库:目录
2,表:
以mysql.user表为例:
MyISAM(一种存储引擎)的表:
user.frm -- 列的相关信息
user.MYD -- 数据行
user.MYI -- 索引信息
3,默认引擎(InnoDB)存储关系:
- 表 段:一个表就是一个段,包含一个或多个区
- 区:包含一个或多个连续的页
- 页:最小的IO单元
)]
3,默认引擎(InnoDB)存储关系:
- 表 段:一个表就是一个段,包含一个或多个区
- 区:包含一个或多个连续的页
- 页:最小的IO单元