news 2026/1/24 10:36:47

MySQL 存储引擎:特点、区别与选型原则

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 存储引擎:特点、区别与选型原则

文章目录

    • 一、什么是存储引擎(一句话版)
    • 二、InnoDB vs MyISAM 核心区别总览(必背表)
    • 三、InnoDB 特点(面试重点)
      • 1️⃣ 支持事务(ACID)
      • 2️⃣ 行级锁 + MVCC(高并发神器)
      • 3️⃣ 崩溃恢复能力强
      • 4️⃣ 聚簇索引(必须会说)
    • 四、MyISAM 特点(现在主要是“认识即可”)
      • 1️⃣ 不支持事务、不支持行锁
      • 2️⃣ 读性能高(历史原因)
      • 3️⃣ 崩溃风险大
    • 五、存储引擎的选择原则(面试标准答案)
      • ✅ 90% 场景:InnoDB
      • ⚠️ 特殊场景:MyISAM(了解即可)
    • 六、如何查看 & 配置存储引擎(实操必会)
      • 1️⃣ 查看当前 MySQL 支持的引擎
      • 2️⃣ 查看某张表的存储引擎
      • 3️⃣ 建表时指定存储引擎
      • 4️⃣ 修改表的存储引擎
      • 5️⃣ 设置默认存储引擎

一、什么是存储引擎(一句话版)

存储引擎 = 表的“数据存放方式 + 读写规则”

  • 同一个 MySQL

  • 不同表

  • 可以用不同存储引擎

就像同一栋楼里:

  • 有的房间是钢筋混凝土(InnoDB)

  • 有的是木结构(MyISAM)


二、InnoDB vs MyISAM 核心区别总览(必背表)

维度InnoDB(默认)MyISAM
事务✅ 支持(ACID)❌ 不支持
行级锁表级锁
并发性能⭐⭐⭐⭐
外键✅ 支持❌ 不支持
崩溃恢复✅ redo / undo❌ 易损
MVCC
适合场景高并发、核心业务读多写少、统计类
MySQL 8 默认

👉一句话记忆法

要安全、要并发、要事务 → InnoDB
要快读、要简单、不怕挂 → MyISAM


三、InnoDB 特点(面试重点)

1️⃣ 支持事务(ACID)

  • 原子性、一致性、隔离性、持久性

  • Spring 事务底层默认依赖InnoDB

面试雷点

“Spring 事务失效有可能是因为表不是 InnoDB”


2️⃣ 行级锁 + MVCC(高并发神器)

  • 更新一行 ≠ 锁整张表

  • 读写并发不卡顿

  • 多版本并发控制(快照读)

📌 典型场景:

  • 下单

  • 扣库存

  • 转账


3️⃣ 崩溃恢复能力强

  • redo log + undo log

  • MySQL 异常宕机,重启后能自动恢复


4️⃣ 聚簇索引(必须会说)

  • 主键索引 = 数据本身

  • 二级索引保存的是主键值

二级索引 -> 主键 -> 数据

❗ 面试追问:

为什么 InnoDB 推荐使用自增主键?


四、MyISAM 特点(现在主要是“认识即可”)

1️⃣ 不支持事务、不支持行锁

  • 更新一条数据

  • 整张表被锁住 😵


2️⃣ 读性能高(历史原因)

  • 索引和数据分开存

  • 全表扫描、统计速度快


3️⃣ 崩溃风险大

  • 容易表损坏

  • 修复成本高

👉 所以:

生产环境几乎不用 MyISAM 了


五、存储引擎的选择原则(面试标准答案)

✅ 90% 场景:InnoDB

业务推荐
用户、订单、支付InnoDB
高并发接口InnoDB
有事务需求InnoDB
微服务InnoDB

⚠️ 特殊场景:MyISAM(了解即可)

场景原因
只读数据结构简单
历史归档不需要事务
临时统计表追求极致读

六、如何查看 & 配置存储引擎(实操必会)

1️⃣ 查看当前 MySQL 支持的引擎

SHOW ENGINES;


2️⃣ 查看某张表的存储引擎

SHOW TABLE STATUS LIKE 'user';

SHOW CREATE TABLE user;


3️⃣ 建表时指定存储引擎

CREATE TABLE user ( id BIGINT PRIMARY KEY, name VARCHAR(50) ) ENGINE=InnoDB;


4️⃣ 修改表的存储引擎

ALTER TABLE user ENGINE=InnoDB;

⚠️ 生产环境操作要谨慎,可能锁表


5️⃣ 设置默认存储引擎

SHOW VARIABLES LIKE 'default_storage_engine';

SET default_storage_engine=InnoDB;


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/23 11:37:37

快速掌握时序数据库 + TDengine 学习指南

1. 时序数据库核心认知 数据特征:高写入吞吐、时序有序性、保留期(TTL)、降采样与压缩、插值与对齐、窗口聚合。典型场景:物联网传感器、工业监控、日志/指标(Metrics)、金融行情、车联网。关键能力评估维度:写入性能…

作者头像 李华
网站建设 2026/1/17 9:55:14

数据挖掘在零售行业的实战案例

数据挖掘在零售行业的实战案例 关键词:数据挖掘、零售行业、客户分群、精准营销、库存优化、销售预测、实战案例 摘要:本文深入探讨数据挖掘技术在零售行业的核心应用场景,通过四个完整实战案例(客户分群、精准营销、库存优化、销售预测)解析关键技术路径。结合K-means聚类…

作者头像 李华
网站建设 2026/1/21 1:18:07

TensorRT与OpenTelemetry集成实现分布式追踪

TensorRT与OpenTelemetry集成实现分布式追踪 在当今的AI生产系统中,一个模型“跑得快”已经不再是唯一的追求。更关键的问题是:当整个推理链路出现延迟抖动或性能退化时,我们能否快速定位问题?是在预处理卡住了,还是GP…

作者头像 李华
网站建设 2026/1/19 17:06:50

转行AI大模型算法工程师,如何在人工智能领域实现职业跃迁

AI大模型算法工程师行业概况 在人工智能技术飞速发展的今天,AI大模型算法工程师成为了推动行业创新的关键力量。该领域涵盖了深度学习、自然语言处理、计算机视觉等多个方向,广泛应用于互联网、金融、医疗、教育等领域。AI大模型算法工程师不仅需要具备扎…

作者头像 李华
网站建设 2026/1/19 16:19:01

Java程序员转行大模型开发指南,附学习资源,必收藏!_2025最新程序员转行AI大模型教程(非常详细)

本文为Java程序员提供大模型开发转型指南,涵盖基础知识学习、工具掌握、编程提升、数学储备和实践步骤。分析Java程序员转行优势,详解AI大模型时代的新技术岗位及所需知识体系,并提供系统化学习路线与资源,助力程序员抓住AI时代机…

作者头像 李华