MySQL数据库MyISAM和InnoDB存储引擎的对比
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库MyISAM和InnoDB存储引擎的对比相关的知识,希望对你有一定的参考价值。
MyISAM
① 不支持事务(事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功要么全部失败)。
② 表级锁定(更新时锁整个表)
③ 读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身不会阻塞另外的读。
④ 只会缓存索引:MyISAM可以通过key_buffer_size缓存索引,以大大提高访问性能,减少磁盘I/O,但这个缓存区只会缓存索引,而不会缓存数据。
⑤ 读取速度较快,占用资源相对少。
⑥ 不支持外键约束,但支持全文索引。
⑦ 5.5.5前为默认存储引擎。
适合的业务场景:
1. 不需要事务支持的业务
2. 读数据比较多的应用
3. 数据库修改较少的业务
4. 对数据一致性要求不是非常高的业务
5. 硬件资源比较差的机器可以用MyISAM
InnoDB
① 支持事务:支持4个事务隔离级别,支持多版本读。
② 行级锁定(更新时一般是锁定当前行):通过索引实现,全表扫描仍然会是表锁。
③ 读写阻塞与事务隔离级别相关。
④ 具有非常高效的缓存特性:能缓存索引,也能缓存数据。
⑤ 整个表和主键以Cluster方式存储,组成一颗平衡树。
⑥ 所有Secondary Index都会保存主键信息。
⑦ 支持分区,表空间,类似Oracle数据库。
⑧ 支持外键约束,5.5以前不支持全文索引,之后版本支持了。
⑨ 和MyISAM相比对硬件资源要求比较高。
适合的业务场景:
1. 需要事务支持的业务
2. 行级锁定对高并发有很好的适应能力,但需要确保查询时通过索引完成。
3. 读写及更新都很频繁的场景
4. 数据一致性要求较高的业务
5. 硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可用减少磁盘I/O。
以上是关于MySQL数据库MyISAM和InnoDB存储引擎的对比的主要内容,如果未能解决你的问题,请参考以下文章