目录

一、引言:当“表”成为世界的通用语言

二、理论基石:关系模型与 ACID

三、引擎架构:一条 SQL 的奇幻漂流

四、存储机制:页、缓冲池与 WAL

五、并发控制:锁、MVCC 与隔离级别

六、SQL:声明式语言的王者

七、索引:B+ 树、哈希与全文

八、分布式演进:从分库分表到 NewSQL

九、云原生与托管服务

十、性能调优:方法论与七把利器

十一、高可用与灾备

十二、安全:从口令到零信任

十三、生态与周边工具

十四、未来展望:融合、自治与智能

结语


一、引言:当“表”成为世界的通用语言

1970 年,E.F. Codd 发表《大型共享数据库的关系模型》,用一张“二维表”替换了当时流行的网状、层次模型,从此奠定关系型数据库(Relational Database,RDB)半个世纪的统治地位。今天,从银行核心账务到手机里的闹钟提醒,几乎每一次确定性的数据访问都在与关系模型打交道。本文试图在三千字内,完成一次从理论到实践、从单机到云原生的纵贯线之旅。

二、理论基石:关系模型与 ACID

  1. 关系模型
    • 结构:关系(表)、元组(行)、属性(列)、域(数据类型)、主键、外键。
    • 语义:第一范式(1NF)到第五范式(5NF)提供了一套消除冗余、保持一致的规范化工具。
    • 操作:关系代数与关系演算构成形式化查询基础,SQL 在二者之间取了“折中的甜蜜点”。

  2. ACID
    • Atomicity:事务是“要么全做,要么全不做”的最小执行单位。
    • Consistency:任何事务结束后,数据库都必须处于合法状态。
    • Isolation:并发事务互不干扰,ANSI SQL 定义了四级隔离(读未提交、读已提交、可重复读、串行化)。
    • Durability:提交成功后,即使立即掉电,数据也必须持久化。

三、引擎架构:一条 SQL 的奇幻漂流

以 MySQL/InnoDB 为例,一条 “SELECT * FROM orders WHERE user_id=42” 的执行路径:

  1. 连接器:权限校验、线程池分配。

  2. 查询缓存(8.0 已废弃):哈希查找,命中则直接返回。

  3. 解析器:词法、语法、语义分析,生成解析树。

  4. 预处理器:检查表、列存在性,展开视图。

  5. 优化器:
    • 基于成本的优化(CBO):统计信息+代价模型选择最优索引;
    • 规则优化:谓词下推、连接顺序重排。

  6. 执行器:
    • 打开表,加 MDL 读锁;
    • 通过 B+ 树索引定位到主键,回表取行;
    • 一致性读视图(MVCC)决定可见性版本。

  7. 返回结果集给客户端。

四、存储机制:页、缓冲池与 WAL

  1. 页(Page)
    InnoDB 默认 16 KB,Oracle 以 Block 为单位(常见 8 KB)。页内存储行记录、槽目录、页头校验和。

  2. 缓冲池(Buffer Pool)
    • LRU+Adaptive Hash Index 减少磁盘 I/O;
    • 多实例缓冲池降低热点争用。

  3. WAL(Write-Ahead Logging)
    • Redo Log:顺序追加,崩溃恢复;
    • Undo Log:MVCC 与回滚;
    • Checkpoint:把脏页刷盘,缩短崩溃恢复时间。

五、并发控制:锁、MVCC 与隔离级别

  1. 锁粒度
    • 表锁(MyISAM):开销低,并发差;
    • 行锁(InnoDB):两阶段锁(2PL),支持意向锁(IS/IX)实现多粒度锁。

  2. MVCC
    • 每行隐藏事务 ID、回滚指针;
    • 快照读(Snapshot Read)不加锁,当前读(Current Read)加 Record+Gap Lock;
    • 幻读问题通过 Next-Key Lock 解决。

  3. 隔离级别
    • RC(读已提交):避免脏读,可能出现不可重复读;
    • RR(可重复读):InnoDB 默认,借助 MVCC 避免不可重复读;
    • Serializable:读加共享锁,写加排他锁,退化为单线程。

六、SQL:声明式语言的王者

  1. 数据定义(DDL)
    CREATE/ALTER/DROP TABLE、INDEX、VIEW。

  2. 数据操作(DML)
    INSERT、UPDATE、DELETE、MERGE(UPSERT)。

  3. 数据查询(DQL)
    SELECT … FROM … JOIN … WHERE … GROUP BY … HAVING … WINDOW … ORDER BY … LIMIT/OFFSET。

  4. 数据控制(DCL)
    GRANT/REVOKE、角色、行级安全策略(Row Level Security)。

  5. 高级特性
    • CTE(公共表表达式)与递归查询;
    • 窗口函数(ROW_NUMBER、LAG、LEAD);
    • JSON 函数、XML、GIS 扩展。

七、索引:B+ 树、哈希与全文

  1. B+ 树
    • 平衡多路搜索树,所有数据位于叶子节点,顺序遍历友好;
    • 二级索引回表、覆盖索引、索引下推(ICP)。

  2. 哈希索引
    • Memory 引擎、InnoDB Adaptive Hash Index;
    • 仅适用于等值查询,不支持范围。

  3. 全文索引
    • MySQL InnoDB FTS、PostgreSQL GIN、Oracle Text;
    • 倒排索引+分词器,支持布尔、短语、相似度查询。

八、分布式演进:从分库分表到 NewSQL

  1. 垂直拆分
    业务域隔离,减轻单库体量,但无法解决单表数据量过大的问题。

  2. 水平拆分
    • 分片键选择:哈希、范围、组合;
    • 全局唯一 ID:雪花算法、Leaf、UUID;
    • 分布式事务:2PC、TCC、Saga、Seata、XA。

  3. 中间件
    • Proxy 层:ShardingSphere、MyCAT、Vitess;
    • SDK 层:TDDL、Hibernate Shards。

  4. NewSQL
    • Google Spanner:TrueTime API + Paxos,全球强一致;
    • CockroachDB:PostgreSQL 协议,Range 分片+Raft;
    • TiDB:MySQL 协议,Region 分片+Multi-Raft。

九、云原生与托管服务

  1. DBaaS
    • AWS RDS/Aurora:存储计算分离,6 副本、日志即数据;
    • Azure SQL Database:Hyperscale 自动分片,备份秒级恢复;
    • Google Cloud Spanner:全球分布式强一致,SQL+事务。

  2. Serverless
    • Aurora Serverless v2:秒级弹性、按 ACU 计费;
    • PlanetScale:基于 Vitess 的 MySQL Serverless。

  3. 云原生特性
    • 存储层:分布式块存储(EBS)、对象存储(S3);
    • 网络层:VPC、PrivateLink、Global Database;
    • 安全:KMS 加密、IAM 细粒度授权、审计日志。

十、性能调优:方法论与七把利器

  1. 慢查询日志 + pt-query-digest:定位 TOP SQL。

  2. EXPLAIN/EXPLAIN ANALYZE:扫描行数、过滤率、索引使用。

  3. 索引优化:三星索引、最左前缀、ICP、MRR。

  4. 表结构:拆分大字段、垂直拆表、冷热分离。

  5. 参数调优:innodb_buffer_pool_size、work_mem、PGA、SGA。

  6. 缓存:Redis 结果缓存、查询缓存、应用级缓存。

  7. 硬件:NVMe SSD、傲腾持久内存、25 Gbps 网络。

十一、高可用与灾备

  1. 主从复制
    • 异步:MySQL binlog、PostgreSQL WAL-shipping;
    • 半同步:after_sync、after_commit;
    • 延迟从库:误删恢复、影子查询。

  2. 组复制与集群
    • MySQL Group Replication:Paxos 变体,单主/多主;
    • Galera Cluster:Certification-based Replication;
    • Oracle RAC:共享存储+Cache Fusion。

  3. 备份
    • 逻辑:mysqldump、pg_dump;
    • 物理:Percona XtraBackup、pg_basebackup;
    • 快照:EBS Snapshot、LVM、ZFS。

  4. 容灾
    • 同城双活:半同步+VIP 漂移;
    • 两地三中心:异步复制+延迟监控;
    • 云上跨区域:Aurora Global Database、Cross-region Read Replica。

十二、安全:从口令到零信任

  1. 认证:LDAP、Kerberos、IAM、SSL/TLS 客户端证书。

  2. 授权:RBAC、ABAC、行级安全策略。

  3. 加密:
    • 传输:TLS 1.3、SSL/TLS 双向认证;
    • 存储:TDE、列级加密、备份加密。

  4. 审计:FGA(Fine-Grained Auditing)、MySQL Audit Plugin、pgAudit。

  5. 合规:GDPR、PCI-DSS、等保 2.0、HIPAA。

十三、生态与周边工具

  1. 开源栈
    • MySQL、PostgreSQL、MariaDB、SQLite。

  2. 商业版
    • Oracle、SQL Server、DB2。

  3. 工具链
    • 监控:Prometheus+Grafana、PMM、OEM;
    • 压测:sysbench、TPC-C、TPC-DS;
    • 迁移:AWS DMS、Oracle GoldenGate、Debezium。

  4. 大数据融合
    • MySQL→Kafka→Flink:实时数仓;
    • PostgreSQL→Greenplum:MPP 分析;
    • Hive Metastore on RDS:元数据管理。

十四、未来展望:融合、自治与智能

  1. HTAP 融合
    • TiDB 的 TiFlash 列存、Oracle 的 In-Memory Column Store,交易与分析一体化。

  2. 自治数据库
    • Oracle Autonomous、SQL Server Intelligent Query Processing,AI 调优、索引推荐、异常检测。

  3. 多模与可扩展
    • PostgreSQL 的 Foreign Data Wrapper 对接 Mongo、Redis、S3;
    • MySQL HeatWave:内存加速引擎,跑 TP 和 AP 同一套数据。

  4. 边缘与 IoT
    • SQLite、DuckDB 在嵌入式、边缘节点提供轻量级关系能力;
    • 云-边-端协同同步,利用 CRDT 与 OT 解决弱网冲突。

结语

从打孔卡片到云原生,关系型数据库用一张“表”把复杂的世界抽象成行列与关系,用 ACID 把不确定性关进笼子里。今天,当 NoSQL、NewSQL、LakeHouse 纷纷登场,RDB 依然在核心交易、账务、库存、订单等场景不可替代。它像一片深海的压舱石,让数字经济的巨轮在狂风巨浪中保持航向。理解它,就是握住现代信息系统最稳固的那根龙骨。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918575.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918575.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918575.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软考架构】计算机网络中的IP地址表示和子网划分

在计算机网络中,IP地址用于唯一标识网络中的设备。IP地址的表示方式有两种:IPv4和IPv6。IPv4是当前使用最广泛的地址格式,而IPv6是为了解决IPv4地址耗尽问题而设计的。 1. IPv4地址 IPv4地址是一个32位的数字,通常用四个十进制数表…

【后端】Spring @Resource和@Autowired的用法和区别

以下是关于 Resource 和 Autowired 两个依赖注入注解的详细对比说明,重点关注它们的区别和使用场景:📌 核心区别总结特性Autowired (Spring)Resource (JSR-250 标准)来源Spring 框架原生注解Java 标准 (javax.annotation)默认注入方式按类型 …

php+apache+nginx 更换域名

phpapachenginx 更换域名✅ 第 1 步:确认到底是谁在监听 80/443✅ 第 2 步:按监听者修改配置🔹 场景 A:Apache 直接监听 80/443🔹 场景 B:Nginx 监听 80/443,反向代理到 Apache✅ 第 3 步&#…

AI 视频卫士:AI 无人机巡检,适配多元河道场景的治理利器

河道治理,场景各异,难题不同。城市内河的生活垃圾、景区河道的景观破坏、工业园区河道的工业废料,每一种场景都对巡检工作有着独特的要求。AI 视频卫士,凭借强大的 AI 技术,针对不同河道应用场景,打造专属巡…

累加和校验原理与FPGA实现

累加和校验原理与FPGA实现写在前面一、基础原理二、举个例子2.1 进位累加2.2 回卷累加三、FPGA实现3.1 发送端(产生校验和)3.2 接收端(累加和校验)3.3 仿真结果写在后面写在前面 在上文《奇偶校验原理与FPGA实现》中,讲…

深入解析Go设计模式:命令模式实战

什么是命令模式? 命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为独立对象,从而允许客户端通过不同的请求对象进行参数化配置。该模式支持请求的排队执行、操作记录以及撤销等功能。 命令模式UML类图如下所示: 命令模式包含五个核心角色,具体说明如下: …

Pytest项目_day11(fixture、conftest)

Fixture fixture是一种类似于setup、teardown,用于测试前后进行预备、清理工作的代码处理机制 相比于setup、teardown来说,fixture命名更灵活,局限性更少使用conftest.py配置里面可以实现数据共享,不需要import就能自动找到一些配…

DAY 43 复习日

作业: kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 划分数据集 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader impo…

Flink运行时的实现细节

一、Flink集群中各角色运行架构先说Flink集群中的角色吧,有三个分别是客户端(Client)、JobManager、TaskManager。客户端负责接收作业任务并进行解析,将解析后的二进制数据发送给JobManager;JobManager是作业调度中心,负责对所有作…

思科、华为、华三如何切换三层端口?

三层交换机融合了二层交换技术与三层转发技术,具备强大的网络功能。主流厂商(思科、H3C、华为)的三层交换机均支持二层端口与三层端口的相互切换,但具体命令存在差异。本文将详细介绍三大厂商设备的端口切换方法及相关知识。一、各…

springboot的基础要点

Spring Boot 的核心设计理念是 ​​"约定优于配置"​​(Convention Over Configuration),旨在简化 Spring 应用的初始搭建和开发过程。以下是需要掌握的核心基础要点:​一、核心机制​​自动配置 (Auto-Configuration)​…

lesson36:MySQL从入门到精通:全面掌握数据库操作与核心原理

目录 一、引言:为什么选择MySQL? 二、MySQL安装与登录配置 2.1 环境准备 2.2 登录指令详解 三、数据库核心操作 3.1 数据库生命周期管理 3.2 数据库存储引擎选择 四、数据表设计与操作 4.1 表结构创建(含数据类型详解) …

Spring源码解析 - SpringApplication run流程-prepareContext源码分析

prepareContext源码分析 private void prepareContext(DefaultBootstrapContext bootstrapContext, ConfigurableApplicationContext context,ConfigurableEnvironment environment, SpringApplicationRunListeners listeners,ApplicationArguments applicationArguments, Bann…

HIS系统:医院信息化建设的核心,采用Angular+Java技术栈,集成MySQL、Redis等技术,实现医院全业务流程管理。

HIS系统在医院信息化建设中扮演着核心的角色。它是一个综合性的信息系统,旨在管理和运营医院的各种业务,包括门诊、住院、财务、物资、科研等。技术细节:前端:AngularNginx后台:JavaSpring,SpringBoot&…

深度学习-卷积神经网络-LeNet

卷积神经网络是一种专门用于处理具有网格结构数据(如图像、音频等)的深度学习模型。它通过卷积层自动提取数据中的特征,利用局部连接和参数共享的特性减少了模型的参数数量,降低了过拟合的风险,同时能够有效地捕捉数据…

【Java项目与数据库、Maven的关系详解】

Java项目与数据库、Maven的关系详解 一、Java项目是否都需要连接本地数据库? 不一定,这取决于项目类型和需求: 1. 需要数据库的项目类型项目类型数据库作用典型场景Web应用存储用户数据/业务数据电商系统、CMS服务端程序持久化数据金融交易系…

两个Maven工程,使用idea开发,工程A中依赖了工程B,改了工程B,工程A如何获取最新代码

两个Maven工程,使用idea开发,工程A中依赖了工程B,改了工程B,工程A如何获取最新代码 如果工程B的版本是快照,那么如下。 步骤一 工程B 执行 clean package install deploy 步骤二 工程A 刷新Maven

奥比中光与地平线、地瓜机器人达成战略合作,携手推动机器人智能化

摘要:机器人“慧眼”与“智脑”强强联合!8月11日,奥比中光与地平线及其控股子公司地瓜机器人在北京签订合作协议,双方将在机器人智能化领域展开深度合作,充分发挥各自的技术与产品优势,携手推动机器人产业的…

【Linux】Tomcat

Tomcat简介Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和 并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理HTML页面的功能,它还是一个Servlet和 JSP容器Tomcat的使用安装ja…

Putting it all together 将所有内容整合在一起

官方链接 https://www.youtube.com/watch?vAa_FAA3v22g&t1s Task1 Putting It All Together 将所有内容整合在一起 图片版 文字版 Putting It All Together 将所有内容整合在一起 From the previous modules, youll have learned that quite a lot of things go on b…