1.C/S 结构 ---客户端/服务器
2.连接方式
TCP/IP(远程和本地):mysql -uroot -p123456 -h 192.168.111.123 -p3306
socket(本地):mysql -uroot -p123456 -S /tmp/mysql.sock
3.实例介绍
mysqld-守护进程
*.ibd-数据文件
-
mysqld及*.ibd启动后运行在内存,内存中编辑完毕后关闭再写回磁盘。
-
实例的构成:守护式(内存中)运行的结构就是一个实例
实例:mysqld + master thread + 干活的thread + 预分配的内存
4.mysqld程序结构
-
SQL语句
结构化查询语言
DQL 数据查询语言
DDL 数据定义语言
DML 数据操作语言
DCL 数据控制语言
mysql> select user,host from mysql.user; 在mysql(库database)中的user(表table)中查询user和host字段
-
连接层
01.提供连接协议:使应用程序通过TCP/IP或SOCKET连接数据库
02.验证账号、密码、端口号、IP地址等的合法性
03.开启专用的连接线程(接收语句、返回结果-做为媒介)
mysql> show processlist; 查看连接状况
04.将语句交给下一层
- SQL层
01.接收语句
02.语法检查和SQL_MODE(SQL标准)
03.语义检查与权限检查
04.解析语句,生成多种执行计划树
05.通过优化器算法计算(基于执行代价cpu、mem、io)
06.优化器会选择优化器认为最优的执行方法
07.语句执行器运行SQL语句
08.提供了查询缓存(默认不开启)
09.日志记录(审计日志、通用日志、二进制日志)(默认不开启)
- 存储引擎层(文件系统FS)
01.根据SQL的执行结果,去磁盘上找到应用的数据
02.找到磁盘上16进制的数据
03.再次返回SQL层,结构化为二维表的形式
04.再由连接层线程,最终展示出来
- MySQL逻辑存储结构
库:相当于目录
create database wordpress charset utf8mb4; ---相当于mkdir /wordpress
show databases; ---相当于ls /
use wordpress; ---相当于 cd /press
id | name | age | gender |
1 | zhangsan | 12 | boy |
2 | lisi | 22 | girl |
表:相当于文件 ---linux文件
列:字段 ---无
列属性 ---无
数据行:记录 ---linux文件数据
表属性:元数据 ---linux文件属性,存放在Inodes中
- MySQL物理存储结构
库:使用文件系统上的目录表示:在数据库数据目录下创建一个目录就等于在mysql中创建了一个库
表:
MyISAM(存储引擎,不同的存储引擎类似于不同的文件系统类型,如xfs与ext4)
以mysql库中user表举例
- user.frm:存储表机构(列,列属性)
- user.MYD:存储的数据记录-数据行
- user.MYI:存储索引
InnoDB(存储引擎,不同的存储引擎类似于不同的文件系统类型,如xfs与ext4)
- time_zone.frm:存储表机构(列,列属性
- time_zone.ibd:存储的数据记录和索引
- ibdata1:数据字典