1 连接方式

1)TCP/IP方式登录
TCP/IP : mysql -uroot -pabc123.. -h 10.0.0.51 -p 3306
2)本地Socket文件方式登录
Socket:mysql -uroot -pabc123.. -S /tmp/mysql.sock

2 分层结构

image.png

2.1 连接层

1、提供连接协议(TCP/IP,Socket)
2、用户名/密码/IP等合法性检查
3、开启专用的连接线程(接受语句,返回结构)show processlist;
4、将语句交给下一层
查看已连接到数据库的连接
默认最大151个,且在8个小时之内不做任何操作,即断开
image.png

2.2 SQL层

1、接受语句
2、语法检查和SQL_MODE(SQL 92标准)
3、语义检查与权限检查
4、解析语句,生成多种执行计划数
5、通过优化器算法(执行代价算法如CPU、内存、IO等)
6、优化器会选择觉得最优的执行方法
7、语句执行器,真正运行SQL语句
8、提供了查询缓存(默认不开启)
9、日志记录(审计日志,通用日志,binlog二进制日志),默认也不开启

2.3 存储引擎层

1、根据SQL的执行结果,去磁盘上找到相应的数据
2、找到磁盘上16进制的数据,再次返回SQL层,结构化成二维表的方式,在由连接层线程,最终展现出来

3 MySQL存储结构

3.1 逻辑存储结构

库 —>Linux目录
create database wordpress charset utf8mb4; —>mkdir /workpress
show databases; —>ls /
use wordpress; —>cd /workpress
表 —>Linux的文件
列(字段) 无
列属性 无
数据行(记录) —>Linux数据行
表属性(元数据) —>Linux文件属性

3.2 物理存储结构-存储引擎

库: 使用文件系统上的目录来表示
表:
1)MyISAM(可类比为ext2)已基本不使用
user.frm:存储的表结构(列,列属性)
user.MYD: 存储的数据记录
user.MYI :存储索引
2)InnoDB(可类比为XFS),现在为5.5版本之后的默认存储引擎
time_zone.frm: 存储的表的结构(列,列属性)
time_zone.ibd: 存储的数据记录和索引
ibdata1 : 数据字典信息
innodb 段 区 页的概念:
数据行存储:每次默认64个连续的page,也就是1M,我们把它称之为一个区,MySQL的表根据存储需求,会由多个区构成,我们又把表称之为一个段
一般情况下,(非分区表)
段:通常一个表就是一个段,一个段由多个区构成
区:连续的64个页构成一个区,1M大小
页:一个页大小为16K