存储引擎

1.基本概念

存储引擎是数据库管理系统(DBMS)用于存储、检索和管理数据的软件组件。存储引擎决定了表的底层实现方式,不同的存储引擎提供不同的特性,例如 事务支持、外键、全文索引等。


2.如何查看和更改MySQL存储引擎

  • 查看数据库支持的存储引擎
    SHOW ENGINES;
  • 查看某个表的存储引擎
    SHOW TABLE STATUS LIKE 'your_table_name';
  • 修改存储引擎
    ALTER TABLE your_table_name ENGINE=InnoDB;

3.常见存储引擎对比

存储引擎 事物支持 锁机制 适用场景
InnoDB 支持 行锁 事务处理、数据一致性要求高
MyISAM 不支持 表锁 读操作多、查询速度快的场景
MEMORY 不支持 表锁 临时数据存储,快速访问
CSV 不支持 无锁 轻量级存储,适用于数据导入导出
ARCHIVE 不支持 行锁 归档数据,适用于日志存储
NDB(Cluster) 支持 行锁 MySQL集群架构
TokuDB 支持 行锁 高压缩比、大数据处理
RocksDB 支持 行锁 高并发、低延迟应用

4.主要存储引擎详解

InnoDB(默认存储引擎)

✅ 优点:

  • 支持事务(ACID),采用 MVCC 进行并发控制。
  • 行级锁(Row Locking),避免了 MyISAM 的表锁问题,提高并发性能。
  • 支持外键(Foreign Key),可保证数据一致性。
  • 支持自动崩溃恢复,保证数据安全。

❌ 缺点:

  • 占用磁盘空间较大(需要维护事务日志、回滚日志)。
  • 读写性能在某些情况下不如 MyISAM。

📌 适用场景:需要事务支持、数据一致性的应用,如电商系统、支付系统、银行系统。


MyISAM

✅ 优点:

  • 查询速度快,适用于大量读操作的应用场景。
  • 存储结构简单,磁盘占用少。
  • 支持全文索引(Full-Text Search),适用于文本搜索。

❌ 缺点:

  • 不支持事务,数据一致性无法保证。
  • 使用表锁(Table Lock),写入时整个表会被锁定,影响并发性能。
  • 崩溃后恢复数据较困难。

📌 适用场景:适用于日志、文章存储、查询密集型应用,如新闻门户、CMS 系统。


🎯 结论

  • 如果需要事务 & 高并发 ➝ InnoDB(默认推荐)
  • 如果需要快速查询 & 只读数据 ➝ MyISAM
  • 如果是临时数据 & 高速读写 ➝ MEMORY
  • 如果是日志归档 & 存储优化 ➝ ARCHIVE
  • 如果是分布式 & 高可用 ➝ NDB Cluster
posted @ 2025-03-10 16:06  一喵良  阅读(22)  评论(0)    收藏  举报