🔥事务存储引擎是数据库管理系统中负责数据存储、检索和事务处理的组件。它们支持事务的四个基本特性,通常被称为 ACID 属性:
🔥MySQL 支持多种事务存储引擎,其中最常见的是 InnoDB 和 NDB(也称为 MySQL Cluster)。此外,还有其他一些如 Archive、Memory、MyISAM等存储引擎,它们在特定场景下也有应用。我们这篇文章主要讲的就是 InnoDB、MyISAM、Memory、NDB
--语法
show create table 表名;
-- 比如查询 student 表的建表语句
show create table student;
-- 结果显示
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table
|
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`id` int DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
-- 语法
show engines;
-- 结果显示 当前数据库下引擎
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| ndbinfo | NO | MySQL Cluster system information storage engine | NULL | NULL | NULL |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| ndbcluster | NO | Clustered, fault-tolerant tables | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
-- 语法 (注:默认存储引擎为 InnoDB)
create table 表名(
字段1 字段1 类型 [comment 字段1注释]
......
字段n 字段n 类型 [comment 字段n注释]
)ENGINE = INNNODB [COMMENT 表注释];
-- 案例:
-- 1、创建表 My_myisam,并且指定MyISAM存储引擎
create table My_myisam(
id int,
name varchar(20)
)engine = MyISAM;
--1、创建表 My_memory,并且指定Memory存储引擎
create table My_Memory(
id int,
name varchar(20)
)engine = Memory;
💢InnoDB 是一种兼顾可靠性和高性能的通用存储引擎,在 MySQL5.5之后,成为了 MySQL 默认的存储引擎,广泛用于需要高可靠性和性能的应用。
特点
(1)事务支持:
(2)行级锁:
(3)外键约束:
(4)崩溃恢复:
(5)自适应哈希索引:
文件结构
InnoDB 使用多种文件来管理数据和索引,主要包括:
(1)数据文件(.ibd):
(2)共享表空间文件(ibdata):
(3)日志文件(ib_logfile):
(4)配置文件(my.cnf):
适用范围
InnoDB 适用于多种场景,特别是:
(1)在线交易处理(OLTP):
(2)需要数据完整性和一致性的应用:
(3)复杂查询和大数据量:
(4)数据恢复和安全性要求高的场景:
总体而言:InnoDB 是一个通用、高效的存储引擎,在性能、可靠性和数据一致性方面表现出色,能够满足各种应用需求,成为了众多企业和开发者的首选。
💢NDB(或 NDB Cluster)是 MySQL 的一种分布式事务存储引擎,主要用于高可用性和高可扩展性的应用场景。它支持自动分片、负载均衡和数据冗余,使其特别适合大规模的在线事务处理(OLTP)应用。
特点
(1)分布式架构:
(2)高可用性:
(3)支持事务:
(4)自动分片:
(5)实时数据访问:
(6)支持外键和约束:
文件结构
NDB 存储引擎的文件结构与传统的 MyISAM 或 InnoDB 不同,因为它采用的是分布式存储模型:
(1)数据节点:
(2)管理节点:
(3)SQL 节点:
适用范围
NDB 存储引擎适合以下场景:
(1)高并发 OLTP 应用:
(2)分布式系统:
(3)实时数据处理:
总体而言:NDB 事务存储引擎以其分布式架构、高可用性和强事务支持,成为大规模、高性能应用的理想选择。尽管其配置和管理相对复杂,但在高并发和大规模数据处理的场景中,NDB 提供了强大的功能和灵活性。
💢MyISAM 是 MySQL 的一种非事务性存储引擎,主要用于需要快速读取、轻量级存储 或者 读取频繁、更新较少 的应用场景。它在 MySQL 早期版本中是默认的存储引擎,适合用于数据读多写少的应用和一些对事务完整性要求不高的系统。
特点
(1)高性能读取:
(2)表级锁:
(3)不支持事务:
(4)全文索引:
(5)表结构简单:
文件结构
MyISAM 的文件结构主要包括:
(1)数据文件(.MYD):
(2)索引文件(.MYI):
(3)表定义文件(.frm):
适用范围
尽管MyISAM引擎在某些方面不如InnoDB引擎强大,但在特定场景下,它仍然具有独特的优势:
(1)只读或大量读操作的应用:
(2)数据分析:
(3)全文搜索:
(4)小型应用:
(5)简单的数据备份和恢复:
总体而言:MyISAM引擎作为MySQL的一个重要存储引擎,虽然在一些方面不如InnoDB引擎强大,但是MyISAM可以 适用于对性能要求高,但对数据完整性和事务支持要求不高的场景。
💢MEMORY 存储引擎是 MySQL 的一种基于内存的数据存储引擎,提供高速的数据访问和操作。它将所有数据存储在内存中,因此在读取和写入方面非常快,适合临时数据存储和快速访问的场景。
特点
(1)高速性能:
(2)表级锁:
(3)非持久性:
(4)支持索引:
(5)内存使用:
MAX_ROWS
和 AVG_ROW_LENGTH
来优化。文件结构
MEMORY 存储引擎的文件结构相对简单,主要包括:
实际数据并不存储在磁盘文件中,而是完全驻留在内存中。
适用范围
MEMORY 存储引擎适合以下场景:
(1)临时数据存储:
(2)高频查询:
(3)测试和开发:
总体而言:MEMORY 存储引擎通过在内存中存储数据,提供了极快的访问速度。尽管它不适合长期存储和持久性数据,但在特定应用场景中,其高效性和便利性使其成为一个有价值的选择。
🔥选择适合的存储引擎是数据库设计中至关重要的步骤,影响性能、可扩展性和数据完整性。以下是一些关键因素和不同存储引擎的比较,帮助您做出更明智的选择。
特性 | InnoDB | MyISAM | MEMORY | NDB |
---|---|---|---|---|
事务支持 | 支持(ACID) | 不支持 | 不支持 | 支持(ACID) |
锁机制 | 行级锁 | 表级锁 | 表级锁 | 行级锁 |
外键支持 | 支持 | 不支持 | 不支持 | 支持 |
数据冗余 | 支持(通过备份和复制) | 不支持 | 不支持 | 支持(自动分片和复制) |
适用场景 | 高并发 OLTP 应用 | 只读和小型表 | 临时数据和缓存 | 分布式和高可用性场景 |
选择合适的存储引擎取决于具体的应用需求、性能目标和数据特性。在决策时,需要综合考虑数据的持久性、并发性能、事务支持及其它特性,以确保所选引擎能有效满足应用需求。
💞 💞 💞那么本篇到此就结束,希望我的这篇博客可以给你提供有益的参考和启示,感谢大家支持!!!祝大家天天开心