从零学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的配置配置
  • 命令行客户端的基本使用(验证安装、简单查询)。
相关推荐
nvd1113 小时前
K3s + ArgoCD 中的密码管理
数据库·oracle·argocd
HZZD_HZZD13 小时前
3T-UEM 架构实战:端-接-算-用四层栈如何承载三级能源计量
struts·架构·能源
Wang's Blog13 小时前
PostgreSQL笔记62: 分区表维护最佳实践——默认分区、锁策略与性能调优
数据库·笔记·postgresql
韶博雅13 小时前
开启补充日志
java·开发语言·sql
熊出没13 小时前
解密数仓中的ODS、DWD、DWS、ADS
数据库·数据仓库
网安蟹佬霸13 小时前
SSRF服务端请求伪造攻防实战:从内网穿透到云元数据利用
sql·web安全·网络安全·自动化·网安
梦想不只是梦与想14 小时前
MySQL 不同操作系统的安装方式
数据库·mysql·mysql安装
熊文豪14 小时前
向量数据库单独建一套,这笔账划不划算
数据库
一只旭宝14 小时前
预约系统版本2(基于第一版改良)
服务器·数据库·c++
卓怡学长14 小时前
w192基于springboot教务管理系统
java·数据库·spring boot·spring·maven·intellij-idea