尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
01-数据库基础架构:从零理解关系型数据库与MySQL三层架构
数据库基础架构从零理解关系型数据库与MySQL三层架构作者黒漂技术佬适用读者零基础入门数据库的同学关联场景无人售货柜、智慧农业、工控系统一、数据库到底是什么为什么不用Excel先说个真实场景你开了一家无人售货柜运营公司柜子里放着饮料、零食用户扫码开门、拿货、自动扣款。每天产生几千条订单数据。你用Excel记着——第一天没问题第一个月勉强能扛但当你有100台售货柜、每天上万条订单时Excel直接寄了多人同时编辑就冲突查上个月哪个商品卖得最好要等半天断电了数据可能丢没有权限控制实习生一不小心把表删了数据库就是专门解决这些问题的软件系统。它能安全地存储大量数据、支持多人并发访问、提供高效查询、保证数据不丢失、还能控制谁能看谁能改。一句话总结Excel是单车数据库是高铁。二、关系型数据库RDBMS核心概念市面上数据库分两大阵营关系型和非关系型NoSQL。MySQL是关系型数据库的代表。2.1 表、行、列——其实就是表格关系型数据库的核心思想特别朴素用二维表来组织数据。以无人售货柜的商品表为例product_idproduct_namepricestockcategory1001可口可乐3.5048饮料1002乐事薯片7.9023零食1003红牛6.0015饮料表Table一张二维表就是一个实体集合比如商品表、订单表列Column/Field表的一列代表一个属性比如价格、库存行Row/Record表的一行代表一条具体记录比如可口可乐3.5元关系Relation表与表之间通过外键关联比如订单表通过product_id关联到商品表2.2 关系型 vs 非关系型对比维度关系型MySQL非关系型Redis/MongoDB数据组织二维表结构固定键值对/文档灵活查询语言SQL标准化各家不同事务支持强ACID弱或不支持适用场景订单、账务、库存等强一致性场景缓存、日志、热门商品排行简单记钱相关的数据订单、扣款、库存必须用关系型数据库因为不能算错一分钱。三、MySQL整体架构三层架构解析这是本篇的核心。理解了MySQL的架构后面学SQL优化、索引原理就轻松了。MySQL从上到下分三层客户端JDBC / 命令行 / Navicat │ ┌────▼────┐ │ 连接层 │ ← 管理连接、鉴权 ├─────────┤ │ SQL层 │ ← 解析、优化、执行 ├─────────┤ │存储引擎层│ ← 数据真正存取的地方 └─────────┘ │ 磁盘文件3.1 连接层Connection Layer你用Navicat连MySQL时输入的账号密码就是在这一层验证的。连接层负责连接管理维护客户端连接每个连接对应一个线程权限验证检查账号密码、检查该用户有没有权限执行某个SQL连接池复用连接避免反复创建/销毁线程的开销实际开发中应用服务如售货柜后端通过连接池如HikariCP连MySQL而不是每次查询都新建连接就是因为新建连接很贵。3.2 SQL层Server层这是MySQL的大脑所有SQL语句都在这里被处理。包含几个核心组件① 查询缓存Query CacheMySQL 8.0已移除查询缓存。早期版本中如果SQL完全一样且表数据没变直接返回缓存结果。但实际命中率很低因为只要表有一条数据变化整张表的缓存就失效了所以官方砍掉了。② 解析器Parser把SQL文本翻译成MySQL能理解的内部数据结构解析树。这一步做两件事词法分析把SQL拆成一个个单词比如SELECT、FROM、WHERE语法分析检查SQL语法对不对比如你写了SELEC * FROM t少了个T解析器直接报语法错误③ 优化器Optimizer这是最聪明的部分。同一条SQL可以有多种执行方式优化器负责选一个它认为最高效的。比如SELECT*FROMordersWHEREproduct_id1001ANDstatuspaid;优化器要决定先按product_id过滤还是先按status过滤用哪个索引这些决策直接影响执行速度。注意优化器不是万能的有时候它选的执行计划不是最优的比如统计信息过期这时候需要我们手动优化后面的文章会详细讲。④ 执行器Executor按照优化器选好的执行计划调用存储引擎的接口真正去读/写数据。3.3 存储引擎层Storage Engine Layer这是MySQL区别于其他数据库的最大特色——存储引擎是可插拔的。你可以为每张表选择不同的存储引擎它们决定了数据怎么存、怎么读、支不支持事务。查看当前MySQL支持哪些存储引擎SHOWENGINES;最常用的两个是InnoDB和MyISAM。四、InnoDB vs MyISAM到底用哪个特性InnoDBMyISAM事务支持✅ 支持❌ 不支持锁粒度行锁并发好表锁并发差外键✅ 支持❌ 不支持崩溃恢复✅ 支持redo log❌ 容易损坏全文索引✅5.6支持✅适用场景大多数业务订单、账务只读为主、统计报表结论MySQL 5.5之后默认存储引擎就是InnoDB绝大多数场景都用它。除非你的表是纯只读的统计表比如售货柜的历史销售统计才考虑MyISAM。实际项目中验证当前表的引擎-- 查看所有表的引擎SELECTtable_name,engineFROMinformation_schema.tablesWHEREtable_schemayour_database;建表时指定引擎不指定则用默认的InnoDBCREATETABLEcabinet_info(cabinet_idINTPRIMARYKEY,locationVARCHAR(100),statusTINYINTDEFAULT1)ENGINEInnoDBDEFAULTCHARSETutf8mb4;五、结合场景无人售货柜的数据该长什么样假设我们运营100台无人售货柜核心表大概长这样-- 售货柜信息表CREATETABLEcabinet(cabinet_idINTPRIMARYKEY,locationVARCHAR(100)NOTNULLCOMMENT投放位置,statusTINYINTDEFAULT1COMMENT1在线 0离线,created_atDATETIMEDEFAULTCURRENT_TIMESTAMP)ENGINEInnoDB;-- 商品表CREATETABLEproduct(product_idINTPRIMARYKEY,product_nameVARCHAR(50)NOTNULL,priceDECIMAL(8,2)NOTNULL,categoryVARCHAR(20))ENGINEInnoDB;-- 订单表CREATETABLEorders(order_idBIGINTPRIMARYKEY,cabinet_idINTNOTNULL,product_idINTNOTNULL,quantityINTDEFAULT1,amountDECIMAL(10,2),statusVARCHAR(20)DEFAULTunpaid,created_atDATETIMEDEFAULTCURRENT_TIMESTAMP)ENGINEInnoDB;注意三点金额用DECIMAL不用FLOAT——浮点数有精度丢失算钱不能马虎时间用DATETIME DEFAULT CURRENT_TIMESTAMP让MySQL自动填入所有表用InnoDB——订单涉及扣款扣库存必须有事务支持总结这篇我们理清了数据库是专业数据管理软件解决并发、查询、安全、持久化问题关系型数据库用二维表组织数据表与表之间通过外键建立关系MySQL三层架构连接层管连接→ SQL层解析优化执行→ 存储引擎层存取数据InnoDB是默认引擎支持事务和行锁绝大多数业务都该用它理解了架构下一步就是学习怎么用SQL操作数据了。
RELATED

相关推荐

BetterJoy 使用教程:从“插上没反应“到流畅游玩的完整上手路线

BetterJoy 使用教程:从“插上没反应“到流畅游玩的完整上手路线

BetterJoy 使用教程:从"插上没反应"到流畅游玩的完整上手路线 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: htt…

📅 2026/9/12 3:05:48
FreeRTOS二进制信号量实战:从按键消抖到LED同步的任务间通信

FreeRTOS二进制信号量实战:从按键消抖到LED同步的任务间通信

1. 项目概述:从“点灯”到“同步”的思维跃迁搞嵌入式开发的朋友,对“按键控制LED”这个经典实验一定不陌生。在裸机编程时代,我们通常在一个while(1)主循环里轮询按键状态,一旦检测到按下,就翻转一下LED的亮灭。代码简…

📅 2026/10/6 15:48:00
基于树莓派与OpenCV的国际空间站自动追踪系统搭建指南

基于树莓派与OpenCV的国际空间站自动追踪系统搭建指南

1. 项目概述:一个高中生的“天地对话”实践如果你对航天、编程或者动手制作感兴趣,那你一定想过这个问题:此时此刻,国际空间站(ISS)正在我们头顶的哪个位置?它飞得有多快?什么时候能…

📅 2026/10/11 10:27:36
MORE NEWS

更多资讯

📰

有趣的Python代码:从一行回文到终端动画的编程乐趣

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Vue 是一个渐进式 JavaScript 前端框架,擅长构建响应式单页应用

Vue 作为一款渐进式 JavaScript 前端框架,专注于构建响应式单页应用;Python 则常以 Flask、FastAPI、Django 等框架提供后端服务。二者通常通过 RESTful API 或 WebSocket 通信,形成“前端负责交互与展示、后端负责数据与业务逻辑”的前后端分…

📰

逻辑回归在信贷风控中的应用:从违约预测到评分卡实践

一个客户在APP上提交了借款申请,系统要在几秒内决定批不批、批多少、利率怎么定。你可能会以为背后跑着的是某个深度学习模型,但实际上,大多数信贷机构真正跑在评分决策流里的,还是那个看起来有点“过时”的逻辑回归。我在做个人贷…

📰

Gated DeltaNet:融合Delta Rule与Gating的线性注意力机制解析与PyTorch实现

最近在调研长文本建模方案时,Gated DeltaNet 这个名字反复出现在我的视野里。它总是和 Delta Rule、Gating 绑在一起讨论,还被不少技术社区的人是下一代开源大模型可能采用的核心机制,标题里的 Qwen 3.5 相关猜测就是在这种背景下冒出来的。先…

📰

Rust RFC 2707 深度解读:让 `..` 成为一等模式(dotdot patterns)的语法统一之路

文档 【免费下载链接】rfcs RFCs for changes to Rust 项目地址: https://gitcode.com/gh_mirrors/rf/rfcs 点击查看 免费下载 Rust 的模式(pattern)语法中存在一个长期的特殊情况:.. 虽然可以在元组、切片、结构体等“列表式”模…

📰

基于SSM的宿舍供电管理系统毕业设计全攻略

每年到了毕业季,私信里问得最多的就是:毕设选题到底怎么定。技术栈要稳、业务场景要真实、论文还得能写够字数。宿舍供电管理系统这个方向,我觉得非常值得展开聊聊。它基于SSMJava这套经典组合,属于典型的后勤管理信息化场景&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬