从零学SQL 02 MySQL架构介绍

本文将介绍 MySQL 软件架构、进程架构及数据库实例的概念,帮助大家理解MySQL数据库是什么。同时对比生产与学习环境部署差异,为下一步安装做准备。

文章目录

一、MySQL的架构

1.1 软件架构

MySQL采用经典的Client/Server(客户端/服务器)架构,你可以把这个架构想象成"餐厅点餐":

  • 服务器端(Server):相当于餐厅的后厨+仓库------负责保管所有"食材"(比如订单、商品数据),并处理来自"顾客"的请求;
  • 客户端(Client):相当于餐厅的点餐员/顾客------不存储数据,只负责向"后厨"发送指令(比如"我要查昨天的订单数据"),并接收后厨返回的结果(查到的订单列表)。

1.2 服务器端进程架构

我们之前提到"数据库(Database)"是存储数据的文件集合,"数据库管理系统(DBMS)"是操作数据库的软件;这两个都是静态的概念。

启动MySQL数据库时,操作系统会创建一个叫做mysqld的进程并分配相应的内存资源, 这个进程就是MySQL DBMS的核心执行程序,是服务器端的"本体"。

MySQL采用单进程多线程架构,这是保证它能同时处理多个请求的核心设计:

  • 单进程 :一个完整的MySQL服务(实例)对应操作系统中的一个 mysqld 进程(Windows下是 mysqld.exe),这个进程是MySQL服务器端的核心,负责管理所有数据资源;
  • 多线程mysqld 进程内部会启动多个线程,每个线程处理一个客户端的请求(比如同时处理A用户查订单、B用户新增数据、C用户修改商品价格),以此实现"并发处理",避免多个用户操作时排队等待。

1.3 实例的概念(数据库核心术语)

MySQL 实例(Instance) 是"动态的"概念:= mysqld 进程 + 内存资源,我们平时说的"启动数据库"和关闭数据库"指的就是创建和销毁实例。

  • 启动数据库 = 创建实例(创建mysqld进程 + 分配配内存);
  • 关闭数据库 = 销毁实例(停止mysqld进程 + 回收内存);

简单说:实例是MySQL 数据库的"运行状态" ,是"活的"DBMS;而数据库(Database)是"死的"数据文件集合,实例启动时会打开数据库文件,我们通过实例去操作数据库。

二、MySQL环境部署准备

2.1 生产环境

在公司的生产环境,客户端和服务器端通常是物理分离的:

  • 服务器端:运行在专门的数据库服务器上(比如云服务器、机房的物理机),24小时不间断运行,保障数据安全和性能;
  • 客户端:运行在员工的个人电脑/办公电脑上,通过网络连接到服务器端,常用的客户端工具包括:
    • mysql命令行工具(官方命令行工具,随MySQL安装,纯文字操作,轻量高效);
    • MySQL WorkBench(官方图形客户端,方便新手);
    • dbeaver、Navicat、dbvisualizer等(商用图形工具,界面友好,功能强大,通常需付费);
    • Python/Java代码(通过代码与Server通信,也是一种"客户端")。

2.2 学习环境

为了方便学习,我们会把服务器端和客户端安装在同一台电脑上------你的电脑既扮演Server(存储数据、处理请求),又扮演Client(发送SQL指令、查看结果)。

软件准备

对于学习SQL,我们只需要安装2个核心组件(mysql命令行工具会随Server自动安装):

组件名称 作用(零基础解读) 是否必装 补充说明
MySQL Community Server MySQL服务器端核心程序,负责存储、管理数据 必装 选择"社区版(Community)",免费且满足学习/中小型业务需求,企业版需付费;
mysql 命令行工具 命令行客户端,通过文字指令操作MySQL 随Server自动安装 无需单独下载,安装Server时会默认包含;
MySQL WorkBench 官方图形化管理工具,可视化操作MySQL 推荐装 新手友好,不用记复杂命令,能可视化建表、查数据、写SQL,降低学习门槛;
安装建议
  1. 新手优先使用「MySQL Server + MySQL WorkBench」,图形工具能帮你快速理解数据结构,后续再慢慢过渡到命令行客户端(工作中命令行更常用);
  2. 版本选择:优先选LTS长期支持版(比如MySQL 8.4.x系列),稳定性更高;

下一节我们将学习Windows下MySQL的安装,包括:

  • MySQL Server的安装和配置
  • MySQL WorkBench的配置配置
  • 命令行客户端的基本使用(验证安装、简单查询)。
相关推荐
大母猴啃编程1 小时前
MySQL内置函数
数据库·sql·mysql·adb
@小匠2 小时前
Spring-Gateway-理论知识总结/常问面试题
数据库·spring·gateway
逍遥德2 小时前
postgresql数据库连接问题
数据库·postgresql
此方ls2 小时前
Redis源码研读八——listpack.c 1080-1528行
c语言·数据库·redis
隔壁小邓2 小时前
TIDB分布式数据库
数据库·分布式·tidb
蜜獾云2 小时前
Kafka(2)-kafka架构-基本原理
分布式·架构·kafka
wellc2 小时前
redis连接服务
数据库·redis·bootstrap
隔叶听风2 小时前
RocketMQ 与 Kafka 长轮询详解
数据库·kafka·rocketmq
袋鼠云数栈2 小时前
构建金融级数据防线:数栈 DataAPI 的全生命周期管理实践
java·大数据·数据库·人工智能·api