跳转到正文

MySQL 总览 ​

MySQL 是全球部署最广泛的开源关系型数据库系统之一。在现代互联网、电商、内容管理系统(CMS)及金融外围业务中扮演着核心角色。以 InnoDB 存储引擎为支柱,MySQL 提供了高吞吐的行级事务支持与成熟的读写分离生态。

架构形态与关键属性 ​

属性维度规格与技术实现
数据模型关系型表格;InnoDB 为默认且事实标准的事务型存储引擎。
查询接口MySQL SQL 方言;支持标准 SQL 语法、窗口函数、公用表表达式(CTE)与 JSON 函数。
开源许可证GPLv2 / 商业双重许可。
部署形态单机自托管、主从复制架构(异步/半同步)、InnoDB Cluster(基于 MGR 的 Group Replication)、主流云厂商托管服务。
事务与隔离InnoDB 支持 ACID;默认隔离级别为 Repeatable Read(通过 MVCC 与 Next-Key Lock 解决当前读下的幻读)。

模型与查询范式 ​

sql
-- 创建遵循 InnoDB 最佳实践的业务表
CREATE TABLE order_records (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT UNSIGNED NOT NULL,
    order_no VARCHAR(64) NOT NULL,
    order_status TINYINT NOT NULL DEFAULT 0,
    metadata JSON NULL,
    total_amount DECIMAL(12, 2) NOT NULL,
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uk_order_no (order_no),
    KEY idx_user_status_created (user_id, order_status, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- 覆盖索引(Covering Index)高效查询,避免回表 I/O
SELECT id, user_id, order_status, created_at
FROM order_records
WHERE user_id = 10086 AND order_status = 1
ORDER BY created_at DESC
LIMIT 10;

事务、索引与高可用扩展 ​

  • InnoDB 聚簇索引存储:主键 B+ 树的叶子节点直接存储整行数据;二级索引叶子节点仅存储索引列与主键值,发生查询时需通过主键值“回表”读取其余字段。
  • Crash-Safe 事务机制:
    • Redo Log(重做日志):物理日志,保证崩溃恢复的持久性(WAL)。
    • Undo Log(回滚日志):逻辑日志,支持事务回滚并提供 MVCC 快照读视图。
    • Doublewrite Buffer(双写缓冲):防止操作系统页与数据库页(16KB)写入不一致时的“页断裂”损坏。
  • 高可用复制拓扑:基于 Binary Log(Binlog)的异步复制、半同步复制(Semi-Sync Replication)与基于 Paxos 协议的 Group Replication(MGR)。

适用边界与架构选型建议 ​

  • ✅ 最适合场景:
    • 经典 Web 业务、电商订单、用户中心与高频 OLTP 读写。
    • 团队已具备成熟的 MySQL 运维体系与云上托管设施。
  • ⚠️ 约束与运维风险:
    • 必须显式声明单调递增的主键,避免随机 UUID 导致 InnoDB B+ 树频繁页分裂与空间碎片。
    • 大表 DDL 曾是传统痛点(虽 8.0 引入 Instant DDL,但仍需规范使用 gh-ost 或 pt-online-schema-change)。
    • 复杂分析型 SQL(多表哈希聚合、复杂子查询)优化器能力不如专用分析型数据库。

版本阅读范围 ​

完整版本目录收录本仓库已有专题(如 mysql-5.6、mysql-5.7、mysql-8.0)。这些是教学与兼容性对照入口;运行环境的具体版本以安装页、工作台或采集证据为准。

推荐学习路线 ​

安装与环境 → 核心概念 → 命令行工具 → 完整版本目录。先完成最小示例,再阅读版本差异。

实验入口与范围 ​

本产品没有对应的浏览器执行引擎;浏览器实验台目录列出本站实际可运行的数据库。 Docker 验证证据列出本产品已采集结果与缺口;阅读证据不等同于启动服务或证明所有功能已验证。

Released under the MIT License.