【MySQL | 七、存储引擎是什么?】

存储引擎是什么?作用于哪里?

1. 存储引擎的定义

存储引擎(Storage Engine)是数据库管理系统中负责 数据的存储、检索和管理 的核心组件。它决定了数据如何存储在磁盘上,以及如何从磁盘中读取数据。存储引擎是数据库与底层文件系统之间的桥梁,负责将逻辑数据模型(如表、行、列)映射到物理存储结构(如文件、块、页)。


2. 存储引擎的作用范围

存储引擎的作用范围主要包括以下几个方面:

(1) 数据的存储与组织

  • 存储引擎决定了数据在磁盘上的存储格式和组织方式。例如:
    • InnoDB 使用 B+ 树作为索引结构,数据存储在页(Page)中。
    • MyISAM 将数据与索引分开存储,数据存储在 .MYD 文件中,索引存储在 .MYI 文件中。

(2) 数据的检索

  • 存储引擎负责实现数据的查询和检索逻辑。例如:
    • InnoDB 支持行级锁,适合高并发查询。
    • MyISAM 支持全文索引,适合文本搜索。

(3) 事务管理

  • 存储引擎决定了是否支持事务以及事务的实现方式。例如:
    • InnoDB 支持事务(ACID 特性),适合需要数据一致性的场景。
    • MyISAM 不支持事务,适合不需要事务支持的场景。

(4) 并发控制

  • 存储引擎决定了如何管理并发访问。例如:
    • InnoDB 支持行级锁,允许多个事务同时访问不同的行。
    • MyISAM 只支持表级锁,并发性能较低。

(5) 数据完整性

  • 存储引擎决定了是否支持外键约束等数据完整性机制。例如:
    • InnoDB 支持外键约束,保证数据的完整性。
    • MyISAM 不支持外键约束。

(6) 性能优化

  • 存储引擎决定了数据库的性能特性。例如:
    • InnoDB 通过缓存(Buffer Pool)和日志(Redo Log、Undo Log)优化读写性能。
    • Memory 存储引擎将数据存储在内存中,读写速度极快。

3. 存储引擎的重要性

存储引擎是数据库的核心组件之一,直接影响数据库的性能、功能和适用场景。选择适合的存储引擎可以:

  • 提高数据库的性能(如查询速度、并发处理能力)。
  • 保证数据的一致性和完整性。
  • 满足特定业务需求(如事务支持、全文搜索)。

4. MySQL中的存储引擎

MySQL 支持多种存储引擎,每种存储引擎都有其特定的使用场景和优缺点。常见的存储引擎包括:

  • InnoDB:支持事务、行级锁、外键约束,适合高并发场景。
  • MyISAM:不支持事务,表级锁,适合读多写少的场景。
  • Memory:数据存储在内存中,读写速度快,适合临时数据存储。
  • Archive:高压缩比,适合存储历史数据。
  • CSV:数据以CSV格式存储,适合数据交互。
  • Blackhole:数据写入后丢弃,适合数据复制中转。
  • Federated:数据存储在远程服务器上,适合跨服务器数据访问。

查看数据库引擎

bash 复制代码
mysql> show engines; -- 表格显示
mysql> show engines \G -- 行显示
*************************** 1. row ***************************
Engine: InnoDB -- 引擎名称
Support: DEFAULT -- 默认引擎
Comment: Supports transactions, row-level locking, and foreign keys -- 描述
Transactions: YES -- 支持事务
XA: YES
Savepoints: YES -- 支持事务保存点
*************************** 2. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
******************等等********************

5. 如何选择存储引擎?

选择存储引擎时,需要根据业务需求综合考虑以下因素:

  • 事务支持:是否需要事务(如金融系统)?
  • 并发性能:是否需要高并发处理(如电商系统)?
  • 数据完整性:是否需要外键约束?
  • 存储空间:是否需要高压缩比(如日志系统)?
  • 查询性能:是否需要全文搜索或快速查询?

需要说的是

在MySQL中,存储引擎是为 每张表 单独指定的。这意味着同一个数据库中的不同表可以使用不同的存储引擎。

存储引擎的增查改

在创建一张表是如果没有指定存储引擎,MySQL会默认使用InnoDB存储引擎

创建表时指定存储引擎

bash 复制代码
CREATE TABLE example_table (
    id INT PRIMARY KEY,
    name VARCHAR(50)
) ENGINE=InnoDB;

修改表的存储引擎

bash 复制代码
ALTER TABLE example_table ENGINE=MyISAM;

查看标的存储引擎

bash 复制代码
SHOW TABLE STATUS WHERE Name = 'example_table';

6. 总结

存储引擎是数据库管理系统中负责数据存储、检索和管理的核心组件,作用于数据的存储、检索、事务管理、并发控制、数据完整性和性能优化等方面。选择合适的存储引擎对数据库的性能和功能至关重要。

相关推荐
cmes_love7 分钟前
港股Level2历史数据:逐笔成交与分钟线
数据库·oracle
自由能燃气设备7 分钟前
燃气热水锅炉/全预混低氮冷凝锅炉哪个品牌好?哪家好?6大商用品牌横评
大数据·数据库·人工智能
智购科技智能售货柜10 分钟前
2026自动售货机设备能耗计量系统:从功率监测到能效分析的工程实践~YH
数据库·人工智能·redis·缓存·架构·perl·symfony
云贝贝贝12 分钟前
PostgreSQL 生产环境备份恢复与高可用实战
数据库·postgresql
程序员-Benothing1 小时前
MySQL 中的 MVCC 是什么?如果没有 MVCC,会有什么影响?
数据库·mysql
Zenova EdgeOS1 小时前
工业网关心跳机制:从 Keepalive 到健康判定的工程实战
大数据·网络·数据库·边缘计算·工业网关
疯狂打码的少年1 小时前
【数据库技术】关系完整性约束(实体/参照/用户定义)
运维·服务器·数据库·笔记
派小汤1 小时前
Harmony2.2.0通过RdbStore实现通用类操作本地SQLite数据库
数据库·sql·sqlite·鸿蒙·鸿蒙系统
程序员-Benothing3 小时前
MySQL 中的事务隔离级别有哪些?默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
lv__pf3 小时前
【TL mysql 3】
数据库