什么时候使用 MyISAM 和 InnoDB?
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 表
如需简要了解,请阅读以下链接:
- MySQL 引擎:InnoDB 与 MyISAM – 优点和缺点
- MySQL 引擎:MyISAM 与 InnoDB
- 主要区别是什么InnoDB 和 MyISAM 之间?
- MyISAM 与 InnoDB
- MyISAM 和 InnoDB 有什么区别?
- MySql:MyISAM 与 Inno DB!
相关文章