有以下几点

1、innodb支持事务,myisam不支持

2、innodb支持mvcc(用来增加并发性的被称为“多版本并发控制(MVCC)”的机制),myisam不支持

3、innodb支持外键(外键必须是主表的唯一键,类型必须一样,避免使用复合键),myisam不支持

4、innodb在MySQL5.6之前不支持 FULLTEXT类型的全文索引(可以使用sphinx插件)5.6版本后支持英文全文索引,5.7版本通过ngram插件支持中文,myisam支持

5,innodb支持行级锁(只在where的主键上有效),myisam只支持表级锁

6、myisam索引方式为非聚集索引,引文件和数据文件是分离的,索引文件仅保存数据记录的地址。,innodb索引方式为聚集索引,数据文件本身就是索引文件

7、innodb表必须有主键,myisam可以没有

8、InnoDB 的辅助索引 data 域存储相应记录主键的值(所以辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。),myisam是地址

9、innodb使用的是聚簇索引,myisam使用的是非聚簇索引

关于第9点的说明这2个方式的区别,如下图

文字说明:1、 InnoDB 使用的是聚簇索引, 将主键组织到一棵 B+树中, 而行数据就储存在叶子节点上, 若使用"where id = 14"这样的条件查找主键, 则按照 B+树的检索算法即可查找到对应的叶节点, 之后获得行数据。 若对 Name 列进行条件搜索, 则需要两个步骤:
第一步在辅助索引 B+树中检索 Name, 到达其叶子节点获取对应的主键。
第二步使用主键在主索引 B+树种再执行一次 B+树检索操作, 最终到达叶子节点即可获取整行数据。2、MyISM 使用的是非聚簇索引, 非聚簇索引的两棵 B+树看上去没什么不同, 节点
的结构完全一致只是存储的内容不同而已, 主键索引 B+树的节点存储了主键, 辅助键索引B+树存储了辅助键。 表数据存储在独立的地方, 这两颗 B+树的叶子节点都使用一个地址指向真正的表数据, 对于表数据来说, 这两个键没有任何差别。 由于索引树是独立的, 通过辅助键检索无需访问主键的索引树。

MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。支持 FULLTEXT类型的全文索引。只支持表级锁。数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进行操作。可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。表主键上允许没有任何索引和主键的表存在,索引都是保存行的地址。

InnoDB:提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多用户并发操作的新能。但是InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。存储空间上需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。可移植性、备份及恢复上,免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump,在数据量达到几十G的时候就相对痛苦了。索引上不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。表主键上如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。

转载于:https://www.cnblogs.com/chenhaoyu/p/6514460.html

MySQL中MyISAM 和 InnoDB 的基本区别相关推荐

  1. MySQL中Myisam、InnoDB碎片优化

    起因:查看线上数据库中Table Information时发现有一个日志表数据大小和索引大小有915M,但实际行数只有92行.该表需要频繁插入并且会定时去删掉旧的记录.表类型为Myisam,已建立一个 ...

  2. MySQL中MyISAM 与innoDB的区别(转)

    InnoDB 和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而 InnoDB类型支持.MyISAM类型的表强调 ...

  3. MySQL中myisam和innodb的主键索引有什么区别?

    MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.下图是MyISAM索引的原理图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索 ...

  4. mysql 5.6l安装教程,Mysql中MyISAM引擎和InnoDB引擎的比较

    结论 如果不清楚自己应该用什么引擎,那么请选择InnoDB,Mysql5.5+的版本默认引擎都是InnoDB,早期的Mysql版本默认的引擎是MyISAM MyISAM 和 InnoDB的适用场景 M ...

  5. MySQL存储引擎中MyISAM和InnoDB区别

    转载自  MySQL存储引擎中MyISAM和InnoDB区别 MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应 ...

  6. MySQL 中 MyISAM 中的查询为什么比 InnoDB 快?

    MySQL 中 MyISAM 中的查询为什么比 InnoDB 快? 关于,这个问题,我网上看了很多答案.大多内容都雷同,但是我要强调的是,并不是说 MYISAM 一定比 InnoDB 的 select ...

  7. MySQL中MyISAM引擎与InnoDB引擎性能简单测试[转]

    MySQL中MyISAM引擎与InnoDB引擎性能简单测试 [硬件配置] CPU : AMD2500+ (1.8G) 内存: 1G/现代 硬盘: 80G/IDE [软件配置] OS : Windows ...

  8. 【MySQl】MyISAM和InnoDB索引对比

    [MySQl]MyISAM和InnoDB索引对比 部分内容转自:http://www.2cto.com/database/201211/172380.html 比较好的文章:http://www.cn ...

  9. MySQL的MyISAM和InnoDB存储引擎表结构

    MySQL的MyISAM和InnoDB存储引擎表结构: MyISAM存储引擎: MyISAM表:每一个表都有3个文件,都位于数据库目录中. tb_name.frm 表结构定义 tb_name.MYD ...

最新文章

  1. 免安装版 mysql-5.6.29-winx64 下载,配置
  2. 视频压缩编码 gop(Group of Pictures)(I帧间隔)的概念、IDR、I帧(关键帧,intra picture)、P帧、B帧、帧内压缩、帧间压缩、pts(显示时间)、dts(解码时间)
  3. [libjingle学习笔记]编译注意事项
  4. python捕获信号退出_Python捕获信号退出Python中的捕获Ctrl+C/SIGINT,优雅地退出多个进程,python,在,CtrlCSIGINT,并...
  5. 关于SpringMvc实践的一些体会和总结
  6. MongoDB入门系列(二):Insert、Update、Delete、Drop
  7. requests与bs4编码
  8. 手机python安装教程_Python安装不用愁,Python安装教程来了(2021)
  9. 画PCB四层板细节总结
  10. 数据的存储------计算机中常见数据类型的存储方式(C语言解析)
  11. m4a转mp3方法,m4a转mp3步骤
  12. 2020年年度总结(致敬自己)
  13. JVM总结之垃圾回收详解
  14. 2022年最新版Spring专项面试突击
  15. iOS调试Bug技巧
  16. 顺丰不“顺” 王卫何敢称王?
  17. 纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
  18. php快速接头,波纹快速接头(M-PG-G-NPT)
  19. 固态硬盘多大合适 php,固态硬盘温度一般多少度
  20. C#实战027:socket实现大文件传输

热门文章

  1. 【Qt】QT_BEGIN_NAMESPACE 和 QT_END_NAMESPACE
  2. Travis CI : 最小的分布式系统(三)
  3. 什么是大数据口子_大数据分析师年薪几十万,学什么专业才能从事大数据?
  4. Java多线程复习:3(在操作系统中查看和杀死进程线程)
  5. linux cp sync,通过SSH使用Rsync传输文件,复制和同步文件及目录
  6. 【spring】第二个springmvc helloworld 以及 spring模糊路径
  7. 【javaweb】eclipse重启后tomcat打不开解决方法
  8. ios TableView编辑状态多选框的修改
  9. 小程序内容审核违规过滤,在小程序使用security.msgSecCheck
  10. Element-ui表格选中回显