mysql的体系结构

MySQL工作模式

mysql是基于服务端/客户端的cs工作模式的;其提供了两种连接方式:
(1)本地socket连接方式,这种方式只能在本地使用,不依赖ip端口号,比如在终端输入mysql -uroot -p进行客户端对服务端mysqld的连接;
(2)tcp/ip远程连接:比如navicat进行数据库的连接;
图解:
在这里插入图片描述

服务器端mysqld实例

图解实例:
在这里插入图片描述

1.什么是实例?
实例 : 一个mysqld进程+mysql预分配的内存结构+大量的工作线程
2.功能是什么?
管理数据
3.mysqld在内存中的工作?
mysqld服务端启动后在内存中是一个守护进程一直运行在内存中;
在内存中MySQLd有独占的预分配内存,供来进行数据的操作,不需要频繁开辟内存空间;
mysql支持高并发,可以允许大量的用户对数据库进行操作,是其在内存中开辟了大量不同的线程来负责不同的工作;

MySQL与我们普通应用的区别,如Excel:
(1)Excel启动之后会加载到内存中,
(2)当使用Excel进行数据操作时,是在内存中开辟了一部分空间,供其使用,当对数据进行保存后,会将数据写入磁盘中,该内存会释放掉,当重新打开文件又会重新开辟内存空间;
(3)退出Excel,会将该部分内存释放掉;

mysqld的程序结构

工作原理图如下:
在这里插入图片描述

由两大部分组成:server层(连接层connection+SQL层)+engine引擎层
我们通过模拟SQL语句select user from mysql.user来对mysqld的程序结构进行说明:
(1)用户通过mysql -uroot -p连接到server层的连接层,同时连接层提供了连接协议;
(2)mysqld端进行验证用户名密码等;
(3)MySQL端提供专用的连接线程,每当有新的用户连接进来就会创建一个该连接线程;
通过show processlist可以进行查看该线程;
(4) 连接线层将sql语句交给SQL层进行处理sql语句;
(5)接下来SQL层进行SQL的处理工作:
(5.1)对SQL语句进行语法检查;
(5.2)检查语义(DDL,DML,DCL,DTL);
(5.3)检查用户对该条语句的执行权限
(5.4)解析器:解析预处理(评估语句的执行方案:a.全表扫描,b.索引扫描),得到执行计划;
(5.5)优化器:选择最优的方案;
(5.6)执行器:按照优化器的选择执行SQL语句,得出执行结果===>该执行结果得到的是要查询的数据在磁盘上的位置;
(5.7)查询缓存(query cache 默认不开启);
(5.8)日志记录(binlog二进制日志,glog,需要人为开启);
(6)存储引擎层:(和磁盘进行交互的模块)根据SQL的执行结果和磁盘进行交互,拿到结果,返回给server层,通过每次开辟的连接工作线程返回给用户客户端;

MySQL的逻辑结构

MySQL的逻辑结构也即MySQL的操作对象
类比于linux的逻辑结构:
文件夹:名字 + 属性
文件: 文件名 + 文件属性 + 文件内容
MySQL:(MySQL的操作对象)
库:库名 + 库属性
表:表名+表属性+表内容+列

MySQL的物理存储结构

当SQL层将执行结构交给存储引擎层后,存储引擎层所进行的段,区(簇),页的抽象处理
在磁盘上进行存储内容时,连续的磁盘空间进行存储;
文件系统将磁盘分成一个一个的block块,一个block块是4kb是8个连续的扇区,block是读取文件的最小单位;

如图:
在这里插入图片描述

页(page) : 默认16kB,由连续的4个block块构成;
区(簇) : 默认1M,由64个连续的page组成;
段 : MySQL中一个表就是一个段,由一个或者多个区组成;

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值