MySQL 存储引擎
学习了解 MySQL 常见的存储引擎。
本内容主要摘自官方文档:
简介
在这篇文章中,将要讨论 Mysql 的存储引擎。存储引擎是 MySQL 的组件,用于处理不同类型的 SQL 操作。
MySQL 的存储引擎分为两类:
- 事务性(transactional)
- 非事务性(non-transactional)
MySQL 从 5.5 到最新的版本中,默认使用的存储引擎是 InnoDB ,在 5.5 版本之前默认使用的是 MyISAM 。选择合适的存储引擎是非常重要的。在 此篇文章中,将大概的描述 MySQL 常见的存储引擎。
查看 MySQL 支持的存储引擎:
1 | SHOW ENGINS\G; |
MySQL 支持的存储引擎
- InnoDB
InnoDB 是用于 MySQL 的事务安全(符合 ACID)的存储引擎,具有提交,回滚和崩溃恢复功能以保护用户数据。 InnoDB 行级锁和 Oracle 风格的一致 非锁定读取可提高多用户并发性和性能。InnoDB 将用户数据存储在聚集索引中,以减少基于主键的常见查询的 I / O。 为了保持数据完整性, InnoDB 还支持 FOREIGN KEY 引用完整性约束。有关更多信息 InnoDB,请参见【InnoDB 存储引擎】 - MyISAM
这些表占用的空间很小。 表级锁定 限制了读/写工作负载中的性能,因此表锁通常用于 Web 和数据仓库配置中的只读或主要工作负载中。 - Memory
将所有数据存储在 RAM 中,以便在需要快速查找非关键数据的环境中进行快速访问。该存储引擎以前称为 HEAP 存储引擎。它的用例正在减少;InnoDB 借助 其缓冲池内存区域,提供了一种通用且持久的方式来将大多数或所有数据保留在内存中,NDBCLUSTER 为大型分布式数据集提供了快速的键值查找。 - CSV
其表实际上是带有逗号分隔值的文本文件。CSV 表允许您以 CSV 格式导入或转储数据,便于读取和写入相同格式的脚本和应用程序交换数据。 由于 CSV 表未建立索引,因此通常在正常操作期间将数据保留在 InnoDB 表中,仅在导入或导出阶段使用 CSV 表。 - Archive
紧凑的、没有索引的表旨在用于存储和检索大量很少使用的历史,存档或安全审核信息。 - Blackhole
Blackhole 存储引擎可以接收数据但不存储,类似于 Unix /dev/null 设备。查询总是返回一个空集。这些表可用于将 DML 语句发送到副本的复制配置 中,但源服务器不保留自己的数据副本。 - Merge
使 MySQL DBA 或开发人员可以在逻辑上对一系列相同的 MyISAM 表进行分组并将它们作为一个对象引用。适用于 VLDB 环境,例如数据仓库。 - Federated
提供了链接单独的 MySQL 服务器以从许多物理服务器创建一个逻辑数据库的能力。非常适合于分布式或数据集市环境。 - Example
此引擎作为 MySQL 源代码中的示例,说明了如何开始编写新的存储引擎。它主要是开发人员感兴趣的。存储引擎是什么都不做的 “存根”。您可以使用此引擎 创建表,但是不能将数据存储在表中或从表中检索数据。
存储引擎的特性
| 特性 | InnoDB | MyISAM | Memory | Archive |
|---|---|---|---|---|
| B 树索引 | Y | Y | Y | |
| 集群索引 | Y | |||
| 数据压缩 | Y | Y | Y | |
| 数据缓存 | Y | |||
| 数据加密 | N | N | Y | N |
| 外键支持 | Y | |||
| 全局搜索索引 | Y | Y | ||
| 地理空间数据类型支持 | Y | Y | ||
| 地理空间索引支持 | Y | Y | ||
| 哈希索引 | Y | |||
| 索引缓存 | Y | Y | ||
| 锁定粒度 | 表级别 | 表级别 | 行级别 | 行级别 |
| MVCC | Y | |||
| 存储支持 | 64TB | 256TB | 内存 | 没有 |
| 事务安全 | Y |
Y 代表支持
推荐文章
-
2023-07-14
-
2020-03-04
MySQL 命令学习
-
2020-03-05
Xtrabackup 是一个对 InnoDB 做数据备份的工具,支持在线热备份。
-
2020-02-27
了解常用的备份知识,拓展 MySQL 新的备份知识和方法。
-
2020-06-15
使用 Xtrabackup 搭建 MySQL 主从