前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >InnoDB与MyISAM的区别

InnoDB与MyISAM的区别

作者头像
jeremyxu
发布2018-05-10 17:33:43
1.3K0
发布2018-05-10 17:33:43
举报
文章被收录于专栏:jeremy的技术点滴

今天被人问到InnoDB与MyISAM的区别,突然发现虽然平时做项目时经常时经常用到这两种存储引擎,但却只知道两者在事务支持方面的区别,其它的竟一概不知。

回到家立即查阅了相关资料,终于搞清楚这两者之间的真正差异,这里记录一下以备忘。

两者之间的差异

  • MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持
  • MyISAM类型的表强调的是性能,其执行数度比 InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外键等高级数据库功能
  • InnoDB不支持FULLTEXT类型的索引,而MyISAM支持
  • InnoDB 中不保存表的具体行数,也就是说,执行select count() from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含 where条件时,两种表的操作是一样的
  • 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引
  • DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除,MyISAM里会重新建立表
  • InnoDB支持行锁,MyISAM不支持。但InnoDB的行锁也不是绝对的,假如在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%a%”
  • MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少,能加载更多索引。而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小

如何选择

  • 数据量小,不太在乎读写性能,但需要事务、外键支持,可选用InnoDB
  • 数据量大,读多写少,关注读写性能,可选用MyISAM,事务方面可用CAS的方案实现数据操作的原子性
  • MyISAM表由3个文件构成,可直接将这3个文件拷贝到其它数据库,即完成数据迁移,十分便捷
  • 需要使用全文索引,则选用MyISAM
  • 数据量大,关心数据存储的体积大小,可选用MyISAM
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 两者之间的差异
  • 如何选择
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档