当前位置: 首页 > news >正文

【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:数据存储在远程服务器上,适合跨服务器数据访问。

查看数据库引擎

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存储引擎

创建表时指定存储引擎

CREATE TABLE example_table (
    id INT PRIMARY KEY,
    name VARCHAR(50)
) ENGINE=InnoDB;

修改表的存储引擎

ALTER TABLE example_table ENGINE=MyISAM;

查看标的存储引擎

SHOW TABLE STATUS WHERE Name = 'example_table';

6. 总结

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

相关文章:

  • 安卓应用市场认领应用-签名详细步骤
  • 工业控制PSRAM存储解决方案
  • Deepseek API+Python 测试用例一键生成与导出 V1.0.3
  • 如何入门 Postman?快速了解其功能与用途
  • 基于网启PXE服务器的批量定制系统平台
  • Java学习打卡-Day20-Comparable接口与Comparator接口
  • java基础自用笔记:异常、泛型、集合框架(List、Set、Map)、Stream流
  • 【Golang】补充:占位符、转义字符、错误处理
  • linux中防火墙的配置
  • deploy myEclipse j2ee project to server没反应
  • OpenHarmony子系统开发 - init启动引导组件(三)
  • 56.fm解调最简单的方法过零检测,如何确定计时器的更新速率
  • 批归一化(Batch Normalization)与层归一化(Layer Normalization)的区别与联系
  • 云原生时代的智能流量治理体系设计与实践
  • 【C语言】文件操作(详解)
  • CmDust日志分析工具简单介绍
  • 大模型推理--temperature、top_k、top_p理解
  • 未授权访问
  • neo4j知识图谱常用命令
  • 在Java中使用JDK8创建SpringBoot项目时无法选择Java8
  • 见微知沪|科学既要勇攀高峰,又要放低身段
  • 陕西三原高新区违法占用土地,被自然资源局罚款10万元
  • 张广智︱“编年事辑”:打开学人心路历程的窗户
  • 92岁上海交大退休教师捐赠百万元给学校,其父也曾设奖学金
  • 明查| 新一代AI诊疗系统可3秒筛查13种癌症?没有证据
  • 人民日报:从“轻微免罚”看涉企执法方式转变