mysql工作的原理
连接层
作用:
1.提供链接协议(socket,tcp/ip)
2.提供验证
3.提供专用连接池 show processlist 可以查看链接的用户。
mysql> show processlist;
+----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+----------+------------------+
| 2 | root | localhost | NULL | Sleep | 77 | | NULL |
| 3 | root | localhost | NULL | Sleep | 58 | | NULL |
| 4 | root | localhost | NULL | Query | 0 | starting | show processlist |
+----+------+-----------+------+---------+------+----------+------------------+
3 rows in set (0.00 sec
sql层
连接池会把执行的sql语句转给sql层。
sql层的作用:
1.语法检查
2.语义解析(DML,DDL,DCL,)
3.权限
4.解析器:解析预处理,:执行计划:对比各执行计划的不同
5.优化器:找出成语任务的最优的方案。(基于代价的cost)
6.执行器:按照优化器的选择,执行sql语句,得出执行的结果。(查询到数据在磁盘的位置,取出反馈)
7.查询缓存(query_cache 默认不开启)可以用redis替代。
8.日志记录(binlog二进制日志,glog需要人为开启)
存储引擎层
相当于linux的文件管理系统,主要是和磁盘交互的模块,后续存储引擎中的内容可以具体看。
磁盘
存储的各类文件,mysql.bd 文件
mysql的逻辑结构
库 库名+属性
表 表名+属性+内容+列
字段
数据库操作:
use datebases;
mysql的物理结构
区 一个由若干个段组成的
段
页
块