linux_数据库_2

TJCcc 发布于 2026-03-06 18 次阅读


一:数据库是怎么工作的?

1.4.1 数据库服务工作模型

什么是C/S模型?

C/S模型就是客户端/服务端模型,就像你去饭店吃饭:

  • 客户端 = 你(点菜的人)
  • 服务端 = 厨师(做饭的人)
  • Socket(套接字) = 服务员(传递你和厨师之间的信息)

客户端有哪些?

客户端就是“连接数据库的工具”,有三种:

类型谁用例子
自带命令行工具管理员mysqlmysqladminmysqldump
图形化工具开发人员SQLyog、Navicat、Workbench
程序连接器程序员写代码用pymysql(Python)、gomsql(Go)、php-mysql

服务端是什么?

服务端就是数据库的“大脑”——mysqld 进程,它负责处理所有客户端的请求。


怎么连接数据库?

有两种方式:

连接方式说明例子
本地连接基于unix套接字方式连接,用socket文件,像你在家自己做饭Linux本地连接
远程连接基于TCP/IP协议,像点外卖用IP地址远程连接

二:什么是数据库实例?

1.4.2 数据库服务实例构成

实例是什么?

实例 = 正在运行的MySQL程序 + 它占用的内存 + 它做的事。

你可以把它想象成:

一个厨房(实例)= 厨师(mysqld)+ 配菜员(线程)+ 切菜板(内存)


实例的组成:

  • mysqld:主程序
  • master thread:主线程,监控一切
  • 其他线程:IO线程(读写)、SQL线程(执行语句)、Purge线程(清理垃圾)
  • 内存结构:用来临时存数据,加快速度

内存结构补充知识:

内存区域作用
内核预留内存保证系统不卡死
RSS常驻内存给线程用的
page cache(页缓存)最大的区域,存数据
anon page(匿名页)最小区域,存临时数据

小贴士:MySQL运行时会占用RSS和page cache,所以内存要留够!


三:MySQL内部是怎么工作的?

1.4.3 数据库服务程序结构

整体结构图(简化版):

客户端 → 连接器 → 查询缓存 → 分析器 → 优化器 → 执行器 → 存储引擎 → 磁盘

每一层的功能(超级通俗版)

1️⃣ 连接器
  • 负责“开门查身份”
  • 你输入用户名密码,它去mysql.user表里查对不对
  • 如果对了,就把你的权限记下来
  • 如果你太久不动(默认8小时),它会把你踢出去

长连接:一直连着,省事但占内存
短连接:用完就断,频繁连接慢


2️⃣ 查询缓存
  • 把你查过的语句和结果存起来
  • 下次查同样的语句,直接返回结果,超快!
  • 不推荐用,因为表一更新,缓存就全清空,白忙活
  • MySQL 8.0 直接删了这个功能

3️⃣ 分析器
  • 词法分析:识别关键字、表名、字段名
  • 语法分析:看语句对不对
  • 比如你写 elect * from T,它会报错:“s呢?”

4️⃣ 优化器
  • 决定“怎么做最快”
  • 比如多表查询时,先查哪个表?用哪个索引?
  • 它会选一个成本最低的方案

5️⃣ 执行器
  • 真正开始干活!
  • 先检查你有没有权限
  • 然后调用存储引擎的接口,一行一行查数据
  • 把结果返回给你

小思考题:

如果表里没有字段k,你写 select * from T where k=1,会在哪个阶段报错?

✅ 答案是:分析器。因为它在分析阶段就会检查字段是否存在。


四:逻辑结构和物理结构

1.4.4 逻辑结构

什么是逻辑结构?

就是你在MySQL里看到的那些“虚拟的东西”:

  • 数据库 = 文件夹
  • 数据表 = 文件
  • 字段 = 表格的列
  • 记录 = 表格的行

你不能直接操作磁盘,只能通过这些逻辑结构来操作数据。


1.4.5 物理结构

宏观物理结构

就是硬盘上实际存的东西:

  • 数据库 → 对应一个目录
  • 数据表 → 对应文件(如 .ibd 文件)

微观物理结构(存储引擎内部)

名词解释类比
段(segment)一个表就是一个段一整栋楼
区(extent)一组连续的页,默认1MB一层楼
页(page)最小的I/O单位,默认16KB一个房间
行(row)一条数据一个人

MySQL读写数据是以“页”为单位的,不是一行一行读的,这样效率高!


📌 和磁盘的关系

  • 磁盘有扇区(512字节)
  • 操作系统有block(4KB)
  • MySQL有page(16KB)= 4个block = 8个扇区

这样设计是为了让读写更连续、更高效!


✅ 总结一句话:

MySQL = 客户端发请求 → 服务端处理请求 → 经过连接器、分析器、优化器、执行器 → 调用存储引擎 → 从磁盘读写数据 → 返回结果。

唯有极致沉淀,才能造就辉煌。
最后更新于 2026-03-06