MySQL体系结构

mysql 和 mysqld

简答来说 mysql 是一个客户端的软件(命令行工具),通过它可以和 mysqld 进行连接,处理 sql 语句或 sql 文件。而mysqld 则是后台的服务程序

mysql 实例

实例 = mysqld后台进程 + Master thread + 干活的进程(worker thread包括IO、sql等)+ 预分配内存结构

在这里插入图片描述

mysqld 程序结构

结构化的查询语言

  • DQL 数据查询语言
  • DDL 数据定义语言
  • DML 数据操作语言
  • DCL 数据控制语言

连接层

(1)提供连接协议(socket、TCP/IP)

(2)验证用户密码和账号

(3)提供专用连接线程(接收 SQL,返回结果)

show processlist;

sql 层

(1)检查 SQL 语法

(2)验证语义(判断是那种类型):DQL、DDL、DML、DCL

(3)验证权限

(4)解析器:解析预处理(得出所有的方案),如A方案(全表)、B方案(索引)(最终得出执行计划)

(5)优化器(帮助我们选择最优的方案):基于const

(6)执行器:按照优化器的选择,执行 SQL 语句,得出执行结果(数据在磁盘上的位置,xx段、xx区、xx页)

(7)query_cache(查询缓存):默认不开启,可以使用 redis 进行缓存

(8)记录日志(默认不开启)

存储引擎层 (engine)

和磁盘打交道

相当于linux中的文件系统
在这里插入图片描述

逻辑结构

mysql

库 库名 + 属性

表 表名 + 表属性 + 表内容 + 列

Linux

目录 目录名 + 属性

文件 文件名 + 属性 + 文件内容

物理存储结构

段:一个表(分区表除外)就是一个段,可以有一个或者多个区组成

区:一个区(簇),默认1M,连续的64个pages

页:一个页,默认16KB,连续的4个OS block,最小的TO单元

OS block : 文件系统块,默认是4KB,连续的8个扇区

扇区: 默认512字节(0.5K),连续的512字节长度的磁盘区域

为了顺序IO,简单点就是为了连续读取或写入数据方便

一个区(1M) = 64个页
一个页(16KB)= 4个OS block
一个 OS block(kKB) = 8个扇区

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值