【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. 总结

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

相关推荐
xcLeigh1 分钟前
安装教程:windows上安装oracle详细教程
数据库·ide·oracle·可视化工具
TPCloud40 分钟前
如何快速解决django存储session变量时出现的django.db.utils.DatabaseError错误
数据库·python·django
山外有山a1 小时前
neo4j知识图谱常用命令
服务器·数据库·oracle
MXsoft6181 小时前
监控易一体化运维:监控易机房管理,打造高效智能机房
大数据·数据库
努力奋斗的Tom2 小时前
Mysql中约束的操作
mysql
demonlg01122 小时前
Go 语言标准库中database模块详细功能介绍与示例
开发语言·数据库·golang
奕奕星空2 小时前
MySQL中数据处理小技巧
mysql·正则表达式
Chandler242 小时前
Redis:String 类型 内部实现、编码、命令及应用场景
数据库·redis·缓存
Jtti2 小时前
ubuntu服务器进程启动失败的原因分析
服务器·数据库·ubuntu
小白天下第一2 小时前
快速对接ppt生成功能
java·数据库·ppt