美文网首页C++面试题集数据库
MySQL存储引擎InnoDB与MyISAM

MySQL存储引擎InnoDB与MyISAM

作者: saviochen | 来源:发表于2017-08-12 12:07 被阅读73次

MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但不提供事务支持,而InnoDB提供事务支持已及外部键等高级数据库功能。

1、MyISAM

每个MyISAM在磁盘存储成三个文件。文件以表名命名,以拓展名区分文件类型。

  • .frm文件存储表定义。
  • 数据文件的扩展名为.MYD (MYData)。
  • 索引文件的扩展名是.MYI (MYIndex)。

MyISAM表格可以被压缩,而且他们支持全文搜索。不支持事务,而且不支持外键。如果事务回滚将会造成不完全回滚,不具备原子性。在进行update时,进行锁表并发量相对较小。如果执行大量的select,MyISAM是更好的选择。

MyISAM的索引和数据是分开的,并且索引式有压缩的,能加载更多索引,内存使用率就对应提高了不少。InnoDB是索引和数据紧密捆绑的,没有使用压缩从而造成InnoDB比MyISAM体积庞大不少。

MyISAM缓存在内存是索引,而不是数据。而InnoDB缓存在内存的是数据,相对来说,服务器内存越大,InnoDB发挥优势越大。

  • 优点
    查询速度较快,适合大量的select,支持全文索引
  • 缺点
    不支持事务,不支持外键,并发量较小,不适合大量update
2、InnoDB

这种类型是事务安全的。它支持外键。在update时表进行行锁,并发量相对较大。如果数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。

  • 优点
    支持事务,支持外键,并发量大,适合大量update
  • 缺点
    查询数据相对较快,不适合大量的select
3、详细对比(补充两者差别)

一、InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了。

二、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用

三、InnoDB支持外键,MyISAM不支持

四、MyISAM是默认引擎,InnoDB需要指定

五、InnoDB不支持FULLTEXT类型的索引

六、InnoDB中不保存表的行数,如select count(*) from table时,InnoDB需要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时MyISAM也需要扫描整个表

七、对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引

八、清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表

九、InnoDB支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%lee%')

参考文献:
1、MySQL存储引擎InnoDB与Myisam的六大区别

相关文章

  • 系统原理-乐观锁与悲观锁

    InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB 。查...

  • 2018-03-19

    mysql MyISAM引擎和InnoDB的介绍 1、MyISAM MyISAM是MySQL的默认存储引擎,基于...

  • mysql 事务学习

    1: mysql 存储引擎 主要包括 innodb ,myisam ,memory 等等 innodb 与 myi...

  • mysql(七)

    MySQL存储引擎-innodb 查看存储引擎 innodb和myisam的物理区别 innodb 核心特性 MV...

  • mysql存储引擎

    MySQL 存储引擎概述 MySQL 5.0 支持的存储引擎包括 MyISAM、 InnoDB、 BDB、 MEM...

  • MySQL学习日记(十一)-技术问答

    一、MySQL主要存储引擎MyISAM和InnoDB的区别? 1、 存储结构 MyISAM:每个MyISAM在磁盘...

  • SQL 规范

    基础规范 表存储引擎必须使用InnoDB MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)...

  • MySQL 索引优化的指导性建议

    MySQL 提供 MyISAM 、 InnoDB 、 memory(heap) 等多种存储引擎。每种存储引擎对于索...

  • mysql存储引擎

    mysql存储引擎 innodb myisam 1. 查看存储引擎show engines; 2. innodab...

  • mysql的两种引擎

    MySQL两种存储引擎: MyISAM和InnoDB 简单总结 MyISAM是MySQL的默认数据库引擎(5.5版...

网友评论

    本文标题:MySQL存储引擎InnoDB与MyISAM

    本文链接:https://www.haomeiwen.com/subject/nyndrxtx.html