Mysql不同存储引擎(InnoDB、MyISAM、Memory、Blackhole)的区别

Mysql存储引擎的特点对比

MySQL 支持多种存储引擎,每种存储引擎都有其独特的特点和适用场景。下面是 InnoDB、MyISAM、Memory 和 Blackhole 存储引擎的详细区别:

1. InnoDB 存储引擎

特点

  • 事务支持:InnoDB 支持 ACID 事务,确保数据的一致性和完整性。
  • 外键约束:支持外键约束,确保引用完整性。
  • 行级锁定:使用行级锁定,支持高并发访问,减少锁冲突。
  • 崩溃恢复:通过使用重做日志(redo log)和撤销日志(undo log)实现崩溃恢复。
  • MVCC:支持多版本并发控制(MVCC),提高并发性能。

适用场景

  • 需要事务支持的应用,如金融、电子商务系统。
  • 需要数据一致性和完整性的应用。
  • 高并发写操作的应用。

2. MyISAM 存储引擎

特点

  • 非事务性:MyISAM 是非事务性的,不支持 ACID 属性。
  • 表级锁定:使用表级锁定,适合读多写少的场景,但在高并发写操作中性能较差。
  • 全文索引:支持全文索引,适合文本搜索应用。
  • 存储:数据文件(.MYD)和索引文件(.MYI)独立于表定义文件(.frm)。

适用场景

  • 读多写少的应用场景。
  • 不需要事务支持的应用。
  • 需要全文搜索的应用,如博客、文章存储系统。

3. Memory 存储引擎

特点

  • 内存存储:数据存储在内存中,访问速度非常快,但数据在服务器重启时会丢失。
  • 非持久性:数据在服务器关闭或崩溃时不会持久化。
  • 表级锁定:使用表级锁定,适用于读多写少的场景。

适用场景

  • 临时数据存储,如会话数据、缓存。
  • 需要高读写性能但不关心持久性的应用。

4. Blackhole 存储引擎

特点

  • 无存储:Blackhole 存储引擎不实际存储任何数据,所有插入的数据都会被丢弃。
  • 写黑洞:所有写操作会成功,但不会实际存储数据,读取操作总是返回空结果。
  • 用于复制:常用于复制架构中,作为日志服务器或中继服务器。

适用场景

  • 数据复制:用于将数据传递到其他复制节点,而不实际存储数据。
  • 测试目的:测试写操作的性能而不实际存储数据。

比较总结

特点InnoDBMyISAMMemoryBlackhole
事务支持
外键支持
锁定机制行级锁定表级锁定表级锁定不适用
崩溃恢复
存储位置磁盘磁盘内存
全文索引
数据持久性
适用场景需要事务和数据完整性读多写少,不需事务临时数据,高速访问数据复制和日志中继

Mysql存储引擎的文件类型对比

每种存储引擎在 MySQL 中存放数据的文件结构各不相同,下面是 InnoDB、MyISAM、Memory 和 Blackhole 存储引擎存放数据文件的详细区别

1. InnoDB 存储引擎

文件类型和用途

  • .frm 文件:存储表的定义(表结构)。
  • .ibd 文件:存储 InnoDB 表的数据和索引(如果启用了独立表空间)。
  • ibdata1 文件:存储共享表空间的数据和索引(如果未启用独立表空间)。
  • ib_logfile0 和 ib_logfile1 文件:InnoDB 重做日志文件,用于事务的崩溃恢复。

说明

  • 默认情况下,InnoDB 使用共享表空间文件(ibdata1)存储所有表的数据和索引。
  • 可以通过配置 innodb_file_per_table 参数来启用独立表空间,这样每个表的数据和索引将存储在各自的 .ibd 文件中。

2. MyISAM 存储引擎

文件类型和用途

  • .frm 文件:存储表的定义(表结构)。
  • .MYD 文件:存储 MyISAM 表的数据(MyISAM Data)。
  • .MYI 文件:存储 MyISAM 表的索引(MyISAM Index)。

说明

  • 每个 MyISAM 表都会有三个文件:.frm 文件用于表定义,.MYD 文件用于存储数据,.MYI 文件用于存储索引。

3. Memory 存储引擎

文件类型和用途

  • .frm 文件:存储表的定义(表结构)。

说明

  • Memory 存储引擎的数据存储在内存中,重启 MySQL 服务器后数据会丢失。
  • 只有 .frm 文件存储在磁盘上,用于保存表结构定义。

4. Blackhole 存储引擎

文件类型和用途

  • .frm 文件:存储表的定义(表结构)。

说明

  • Blackhole 存储引擎不实际存储任何数据,因此只有 .frm 文件用于存储表结构定义。
  • 所有插入的数据都会被丢弃,读取操作总是返回空结果。

比较总结

存储引擎文件类型说明
InnoDB.frm, .ibd, ibdata1, ib_logfile0, ib_logfile1.frm 文件存储表定义,.ibd 文件(独立表空间)或 ibdata1 文件(共享表空间)存储数据和索引,ib_logfile0 和 ib_logfile1 文件用于重做日志。
MyISAM.frm, .MYD, .MYI.frm 文件存储表定义,.MYD 文件存储数据,.MYI 文件存储索引。
Memory.frm仅 .frm 文件存储表定义,数据存储在内存中。
Blackhole.frm仅 .frm 文件存储表定义,不实际存储任何数据。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇