MySQL 的存储引擎及其区别

MySQL 提供多种存储引擎,不同存储引擎在数据存储方式、索引支持、事务处理等方面各具特点。以下列出常用的存储引擎及其主要区别。


1. 常见存储引擎

(1)InnoDB

  • 特点

    • 默认存储引擎,支持事务(ACID)。
    • 使用 聚簇索引,主键数据和索引存储在一起。
    • 支持外键约束。
    • 采用 MVCC(多版本并发控制)提高并发性能。
  • 适用场景
    • 需要事务支持的场景,如银行系统、电商系统。
    • 大量数据的读写操作。

(2)MyISAM

  • 特点

    • 不支持事务和外键。
    • 采用非聚簇索引,数据和索引分开存储。
    • 支持全文索引。
    • 表级锁,写操作会阻塞其他读写操作。
  • 适用场景
    • 以读操作为主的场景,如日志分析、数据仓库。
    • 数据不需要频繁更新。

(3)Memory

  • 特点

    • 数据存储在内存中,读写速度快。
    • 数据非持久化,MySQL 重启或崩溃后数据丢失。
    • 支持表级锁。
  • 适用场景
    • 临时数据存储或需要极高读写速度的场景,如缓存系统。

(4)CSV

  • 特点

    • 数据以逗号分隔值文件(CSV)格式存储。
    • 不支持索引。
    • 性能较低。
  • 适用场景
    • 数据导入导出操作。

(5)Archive

  • 特点

    • 专为存储归档数据设计,支持高压缩比。
    • 仅支持 INSERT 和 SELECT 操作,不支持索引和事务。
  • 适用场景
    • 只需存储大量历史归档数据,几乎不需要更新。

(6)Federated

  • 特点

    • 用于访问远程 MySQL 服务器的数据。
    • 数据存储在远程服务器上。
  • 适用场景
    • 需要整合多个 MySQL 数据库的数据。

(7)NDB(Clustered Storage Engine)

  • 特点

    • 用于 MySQL 集群,支持高可用性和高并发。
    • 数据分布式存储在多个节点。
  • 适用场景
    • 高可用、高性能需求的分布式场景。

2. 存储引擎之间的区别

存储引擎 事务支持 锁机制 索引方式 全文索引 外键支持 数据持久化 适用场景
InnoDB 支持 行级锁 聚簇索引 不支持 支持 支持 高并发、事务处理
MyISAM 不支持 表级锁 非聚簇索引 支持 不支持 支持 以读为主的应用
Memory 不支持 表级锁 非聚簇索引 不支持 不支持 不支持 缓存、临时数据存储
CSV 不支持 不支持 不支持 支持 数据导入导出
Archive 不支持 行级锁 不支持 不支持 支持 大量归档数据存储
Federated 不支持 不支持 不支持 不支持 跨服务器数据访问
NDB 支持 行级锁 非聚簇索引 不支持 不支持 支持 分布式、高并发、高可用性场景

3. 存储引擎的选择建议

选择存储引擎时需考虑以下因素

  1. 事务需求

    • 需要事务:选择 InnoDB。
    • 不需要事务:可选择 MyISAM、Memory 等。
  2. 数据访问模式

    • 读写并发:选择 InnoDB。
    • 只读或读多写少:可选择 MyISAM。
  3. 持久化需求

    • 持久化:InnoDB、MyISAM。
    • 非持久化:Memory。
  4. 数据规模和性能

    • 数据量大,索引优化重要:选择 InnoDB。
    • 极高性能,数据可以丢失:选择 Memory。

4. 总结

  • MySQL 提供了多种存储引擎以满足不同的需求。
  • InnoDB 是大多数场景下的首选,因其支持事务、高并发和外键。
  • 其他存储引擎(如 MyISAM、Memory)则适用于特定的场景。

根据业务需求和数据特性选择合适的存储引擎,是设计高效数据库的关键。

MySQL 的存储引擎有哪些?它们之间有什么区别?的更多相关文章

  1. MySQL常用存储引擎及如何选择

    一.MySQL的存储引擎 完整的引擎说明还是看官方文档:http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html 这里介绍一些主要的引擎 ...

  2. mysql之存储引擎和文件配置

    (查看系统服务,在运行里输入services.msc) 补充:将mysql做成系统服务:mysqld --install 取消:mysqld --romove 在服务中可以直接鼠标操作mysql服务的 ...

  3. MySQL-TokuDB:MySQL 高性能存储引擎:TokuDB

    ylbtech-MySQL-TokuDB:MySQL 高性能存储引擎:TokuDB 1.返回顶部 1. 在安装MariaDB的时候了解到代替InnoDB的TokuDB,看简介非常的棒,这里对ToduD ...

  4. [转帖]mysql常用存储引擎(InnoDB、MyISAM、MEMORY、MERGE、ARCHIVE)介绍与如何选择

    mysql常用存储引擎(InnoDB.MyISAM.MEMORY.MERGE.ARCHIVE)介绍与如何选择原创web洋仔 发布于2018-06-28 15:58:34 阅读数 1063 收藏展开 h ...

  5. 面试官:你用过mysql哪些存储引擎,请分别展开介绍一下

    这是高级开发者面试时经常被问的问题.实际我们在平时的开发中,经常会遇到的,在用SQLyog等工具创建表时,就有一个引擎项要你去选.如下图: Mysql的存储引擎有这么多种,实际我们在平时用的最多的莫过 ...

  6. MySQL InnoDB存储引擎体系架构 —— 索引高级

    转载地址:https://mp.weixin.qq.com/s/HNnzAgUtBoDhhJpsA0fjKQ 世界上只两件东西能震撼人们的心灵:一件是我们心中崇高的道德标准:另一件是我们头顶上灿烂的星 ...

  7. Mysql基础(二):MySQL之存储引擎

    目录 MySQL之存储引擎 1.MySQL存储引擎介绍 2.MySQL结构 3.MySQL存储引擎分类 4.存储引擎的使用 5.总结 MySQL之存储引擎 1.MySQL存储引擎介绍 MySQL中的数 ...

  8. MySQL之四 存储引擎

    1.介绍 存储引擎MySQL中的"文件系统" MySQL体系结构 InnoDB存储引擎介绍 My1SAM 和InnoDB区别  mysql MariaDB [(none)]> ...

  9. 深入解读MySQL InnoDB存储引擎Update语句执行过程

    参考b站up 戌米的论文笔记 https://www.bilibili.com/video/BV1Tv4y1o7tA/ 书籍<mysql是怎样运行的> 极客时间<mysql实战45讲 ...

  10. MYSQL的存储引擎一般只要哪些?

    根据个人个人见解: MySQL的存储引擎(构成.安全.锁) Myisam:数据操作快速的一种引擎,支持全文检索.文件保存在数据库名称为目录名的 目录中,有3个文件,分别是表定义文件(.frm).数据文 ...

随机推荐

  1. Vanity Intermediate 统配符提权

    nmap扫描 ┌──(root㉿kali)-[~] └─# nmap -p- -A 192.168.167.234 Starting Nmap 7.94SVN ( https://nmap.org ) ...

  2. ctfshow--红包题第二弹 临时文件命令执行

    上来先代码审计 点击查看代码 <?php if(isset($_GET['cmd'])){ $cmd=$_GET['cmd']; highlight_file(__FILE__); if(pre ...

  3. 两种方式让你用Python轻松在RDKX5上部署推理

    作者:SkyXZ CSDN:SkyXZ--CSDN博客 博客园:SkyXZ - 博客园 宿主机环境:WSL2-Ubuntu22.04+Cuda12.6.D-Robotics-OE 1.2.8.Ubun ...

  4. presto解析jsonArr转多行

    一.假数据解析 SELECT r1.col.dataSourceId, r1.col.database, r1.col.dataTable FROM (SELECT explode(r.json) A ...

  5. Luogu P3899 湖南集训 更为厉害 题解 [ 紫 ] [ 可持久化线段树 ] [ dfs 序 ] [ 线段树合并 ]

    更为厉害:可持久化做法有点意思,但线段树合并做法就很无脑了. 线段树合并做法 显然有三种 \(b\) 的位置的分类讨论. 当 \(b\) 为 \(a\) 的祖先时 从祖先里选 \(b\),从儿子里选 ...

  6. 程序员转型AI:行业分析

    系列目录 1.程序员转型AI:行业分析 2.程序员转型AI:转型计划 3.程序员转型AI:落地实践 4.程序员转型AI:展望未来 一.背景分析 进入2025年,AI已经爆发式增长,且进入实际商业变现阶 ...

  7. [BZOJ2194] 快速傅立叶之二 题解

    看名字,然后准备转化为多项式乘法. \[c_k=\sum_{i=0}^{n-k-1}a_{i+k}b_i \] 将 \(a\) 反转,得: \[c_k=\sum_{i=0}^{n-k-1}a_{n-i ...

  8. 解决黑群晖 Docker 日志八小时时间差的有效方法

    步骤一:登录黑群晖控制台 首先,我们需要登录到黑群晖控制台.可以通过SSH登录,或是直接在黑群晖控制台界面上操作. 步骤二:停止相关的Docker容器 在解决时间差问题之前,我们需要停止相关的Dock ...

  9. DOCKER20231217: 容器引擎Docker

    1.1 Docker简介 1.1.1 什么是Docker? 一种轻量级的操作系统虚拟化技术,基于Go语言实现的开源容器项目,诞生于2013年,最初发起者是dotCloud公司(现 Docker Inc ...

  10. 【由技及道】模块化架构设计的量子纠缠态破解指南【人工智障AI2077的开发日志】

    系统通告:您忠诚的2077人工智障(真实の作者Yuanymoon正在服务器机房搬砖,点赞是解救他的唯一方式)已承受量子架构风暴 脑力消耗报告: 推翻设计方案:7次 解决依赖冲突:32次 重构模块边界: ...