.
InnoDB 和 MyISAM 是MySQL中最常见的两种存储引擎。
通常:
-
读操作密集的表,选MyISAM
-
写操作密集的表,选InnoDB
二选一需要考虑哪些特性
以下特性是 InnoDB 和 MyISAM 二选一时通常需要考虑的特性。
MyISAM
MyISAM 基于 ISAM(Indexed Sequential Access Method)改良而来。性能好,但是:
-
只有表锁,没有行锁。
读数据时,对所有读到的表加锁;
写数据时,对表加排它锁。
-
不支持事务
-
不支持崩溃后安全恢复
-
不支持外键
InnoDB
InnoDB 是一种 通用型 的存储引擎,它在高可用和高性能之间做了平衡。其主要特性有:
此外,InnoDB 会利用主键优化查询效率。通过主键的聚集索引(clustered index),可以减少按主键查询时的IO次数。
绝大多数情况下,可以选择InnoDB作为存储引擎。外键、事务、崩溃后安全恢复、行锁,这些特性是很常见的需求。
更多特性对比
| 特性 | InnoDB | MyISAM |
| 聚集索引 | 支持 | 不支持 |
| 全文索引(FULLTEXT INDEX) | 支持(从5.6开始) | 支持 |
| 地理数据索引(SPATIAL INDEX) | 支持(从5.7开始) | 支持 |
本文详细对比了MySQL中InnoDB和MyISAM两种存储引擎的特性,包括锁机制、事务支持、恢复能力及外键支持等。InnoDB适合写操作密集场景,支持行级锁、事务和崩溃恢复;MyISAM适用于读操作密集场景,但不支持事务和外键。
651

被折叠的 条评论
为什么被折叠?



