【MySQL】两种存储引擎 —— MyISAM vs InnoDB

 

.

InnoDB 和 MyISAM 是MySQL中最常见的两种存储引擎。

通常:

  • 读操作密集的表,选MyISAM

  • 写操作密集的表,选InnoDB

 

二选一需要考虑哪些特性

以下特性是 InnoDB 和 MyISAM 二选一时通常需要考虑的特性。

MyISAM

MyISAM 基于 ISAM(Indexed Sequential Access Method)改良而来。性能好,但是:

  • 只有表锁,没有行锁。

    读数据时,对所有读到的表加锁;

    写数据时,对表加排它锁。

  • 不支持事务

  • 不支持崩溃后安全恢复

  • 不支持外键

 

InnoDB

InnoDB 是一种 通用型 的存储引擎,它在高可用和高性能之间做了平衡。其主要特性有:

  • 支持行锁

    InnoDB 的行锁机制使用了MVCC(Multiversion Concurrency Control)(事务内部保留了一份原数据的快照

  • 支持事务

  • 支持崩溃后安全恢复

  • 支持外键

此外,InnoDB 会利用主键优化查询效率。通过主键的聚集索引(clustered index),可以减少按主键查询时的IO次数。

 

绝大多数情况下,可以选择InnoDB作为存储引擎。外键、事务、崩溃后安全恢复、行锁,这些特性是很常见的需求。

 

更多特性对比

更多:InnoDBMyISAM

 

特性InnoDBMyISAM
聚集索引支持不支持
全文索引(FULLTEXT INDEX)支持(从5.6开始支持
地理数据索引(SPATIAL INDEX)支持(从5.7开始支持

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值