什么时候使用 MyISAM 和 InnoDB?

2021-11-20 00:00:00 database database-schema mysql

MyISAM 的设计理念是,您的数据库被查询的次数远远超过其更新次数,因此它执行非常快速的读取操作.如果您的读写(插入|更新)比率小于 15%,最好使用 MyISAM.

MyISAM is designed with the idea that your database is queried far more than its updated and as a result it performs very fast read operations. If your read to write(insert|update) ratio is less than 15% its better to use MyISAM.

InnoDB 使用行级锁定,具有提交、回滚和崩溃恢复功能来保护用户数据.支持事务和容错

InnoDB uses row level locking, has commit, rollback, and crash-recovery capabilities to protect user data. It supports transaction and fault tolerance

MyISAM 和 InnobDB 之间的上述差异是否正确?请指导MYISAM和InnobDB是否有任何其他限制.我什么时候应该使用 MyiSAM 或 Innodb? 谢谢!

above differences is correct between MyISAM and InnobDB? please guide if any other limitations are there for MYISAM and InnobDB. when should i use MyiSAM or when Innodb? Thank you!

推荐答案

阅读存储引擎.

MyISAM:

MySQL 中的 MyISAM 存储引擎.

The MyISAM storage engine in MySQL.

  • 设计和创建更简单,因此更适合初学者.不用担心表之间的外部关系.
  • 由于结构更简单,因此总体上比 InnoDB 快,因此服务器资源的成本要低得多.-- 大多数情况下不再正确.
  • 全文索引.-- InnoDB 现在有了
  • 特别适用于读取密集型(选择)表.-- 大多数情况下不再正确.
  • 磁盘占用空间比 InnoDB 少 2 到 3 倍.-- 从 5.7 版开始,这可能是 MyISAM 唯一真正的优势.

InnoDB:

MySQL 中的 InnoDB 存储引擎.

The InnoDB storage engine in MySQL.

  • 支持事务(为您提供对 ACID 属性的支持).
  • 行级锁定.与例如 MyISAM.
  • 外键约束.让你让数据库保证数据库状态的完整性,以及表之间的关系.
  • InnoDB 比 MyISAM 更能抵抗表损坏.
  • 支持数据和索引的大型缓冲池.MyISAM 密钥缓冲区仅用于索引.
  • MyISAM 停滞不前;所有未来的增强都将在 InnoDB 中.随着 8.0 版的推出,这一点变得非常清楚.

MyISAM 限制:

  • 没有外键和级联删除/更新
  • 没有事务完整性(ACID 合规性)
  • 没有回滚能力
  • 4,284,867,296 行限制 (2^32) -- 这是旧的默认.可配置的限制(对于许多版本)为 2**56 字节.
  • 每个表最多 64 个索引
  • No foreign keys and cascading deletes/updates
  • No transactional integrity (ACID compliance)
  • No rollback abilities
  • 4,284,867,296 row limit (2^32) -- This is old default. The configurable limit (for many versions) has been 2**56 bytes.
  • Maximum of 64 indexes per table

InnoDB 限制:

  • 没有全文索引(低于 5.6 mysql 版本)
  • 无法快速压缩,只读(5.5.14 引入 ROW_FORMAT=COMPRESSED)
  • 您无法修复 InnoDB 表

如需简要了解,请阅读以下链接:

  1. MySQL 引擎:InnoDB 与 MyISAM – 优点和缺点
  2. MySQL 引擎:MyISAM 与 InnoDB
  3. 主要区别是什么InnoDB 和 MyISAM 之间?
  4. MyISAM 与 InnoDB
  5. MyISAM 和 InnoDB 有什么区别?
  6. MySql:MyISAM 与 Inno DB!

相关文章