常用MySQL存储引擎对比

存储引擎 描述 事务支持 锁机制 ACID 支持 索引类型 适用场景
InnoDB 默认的存储引擎,支持事务和行级锁,具有 ACID 兼容性。 行级锁 B+ 树 事务处理、高并发、数据完整性要求高的应用
MyISAM 不支持事务,表级锁,不具备 ACID 特性。 表级锁 B 树 读密集型、插入和查询频繁的应用
MEMORY 数据存储在内存中,速度快,但不持久化。 无锁 哈希 临时表、缓存、需要高性能读写的临时数据
NDB Cluster 用于 MySQL Cluster,支持分布式存储和高可用性。 行级锁 哈希 分布式数据库、高可用性、实时数据需求
TokuDB 高性能存储引擎,压缩数据,适用于大数据量的 OLAP 场景。 事务锁 B+ 树 数据仓库、大数据量分析、高写入负载
ARCHIVE 高度压缩存储引擎,只支持 INSERT 和 SELECT 操作。 表级锁 数据归档、日志存储

这个表格列出了各种 MySQL 存储引擎的主要特点和适用场景。请注意,选择存储引擎应该根据应用程序的需求来确定,因为每种引擎都有其优点和局限性。

扩展:ACID

MySQL是一种关系型数据库管理系统(RDBMS),它遵循ACID(原子性、一致性、隔离性和持久性)的事务特性,以确保数据的可靠性和完整性。下面是对MySQL的ACID特性的详细介绍:

  1. 原子性(Atomicity):原子性确保事务是不可分割的单元。在MySQL中,当事务开始执行时,所有的操作要么全部完成,要么全部失败,没有中间状态。如果事务中的任何操作失败,系统将回滚所有之前的操作,以确保数据保持一致。
  2. 一致性(Consistency):一致性要求事务在执行前后,数据库应该从一个一致状态变为另一个一致状态。这意味着事务应该遵守数据库的所有约束和规则,如唯一性、外键等,以确保数据完整性。
  3. 隔离性(Isolation):隔离性确保并发事务不会相互干扰,每个事务应该在一个独立的执行环境中运行。MySQL支持多个隔离级别,如读未提交、读已提交、可重复读和串行化,以控制并发事务的可见性。
  4. 持久性(Durability):持久性确保一旦事务提交,其结果将被永久保存在数据库中,即使系统崩溃或重新启动。这是通过将事务日志写入磁盘来实现的,以便在系统恢复时可以重放这些日志来还原事务。

这些ACID特性确保了数据库的稳定性和可靠性,使多个事务能够同时执行而不会导致数据损坏或不一致。在MySQL中,开发者可以使用事务来将一系列操作捆绑在一起,以确保它们在数据库中的执行是可预测和可靠的。


孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意