InnoDB和MyISAM是在使用MySQL最常用的两个表类型。

MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECT,MyISAM是更好的选择。

InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,

对于支持事物的InnoDB类型的表,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。

基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。

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

MyIASM是IASM表的新版本,有如下扩展:
          二进制层次的可移植性。
          NULL列索引。
           对变长行比ISAM表有更少的碎片。
          支持大文件。
          更好的索引压缩。
          更好的键吗统计分布。
          更好和更快的auto_increment处理。

以下是一些细节和具体实现的差别:

1.InnoDB不支持FULLTEXT类型的索引。
          2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数            即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
          3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
          4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
          5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的            InnoDB特性(例如外键)的表不适用。

另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

转载于:https://blog.51cto.com/929044991/997831

mysql的InnoDB和MyISAM对比相关推荐

  1. 一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

    聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了.所以今天在这里用最简短的语言让你明白这些 ...

  2. mysql聚集索引 myisam_一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/21aspnet/article/details/89303988 聚集索引和非聚集索引以及MySQL的 ...

  3. mysql索引innodb和myisam的区别

    引用 引用 区别 InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一 ...

  4. InnoDB与MyISAM对比

    2019独角兽企业重金招聘Python工程师标准>>> InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:M ...

  5. MySQL 数据库 InnoDB 和 MyISAM 数据引擎的差别

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

  6. MySQL(三):InnoDB和MyISAM

    文章目录 一.InnoDB 和 MyISAM的不同 一.InnoDB 和 MyISAM的不同 InnoDB 支持事务,MyISAM 不支持.对于InnoDB每一条SQL语言都默认封装成事务,自动提交, ...

  7. MySQL之innodb与myisam:锁 事务 外键 主键 存储结构 存储大小 索引 count 注重点

    行锁:innodb支持行锁 事务:innodb支持事务 外键:MyISAM不支持InnoDB支持 主键:myisam允许没有索引和主键的表存在:innodb如果没有设定主键或者非空唯一索引,会生成一个 ...

  8. mysql myisam 优点_mysql引擎Innodb和Myisam对比介绍和优缺点

    一.myisam引擎 1.mysql默认引擎,不支持事务* 2.表级锁定,更新时,锁定机制是整张表被锁定,其它连接无法更新表的数据,效率比较低下.锁的机制成本很少,但大大降低了并发性能* 3.读写互相 ...

  9. 面试题:MySQL的innodb和myisam

    一 Innodb 1. 简介 索引是一种排好序的用于快速查找的数据结构. **根据官网手册InnoDB支持B-tree索引.聚簇索引(Clustered indexes).全文索引(Full-text ...

最新文章

  1. 13分页和shell命令行模式
  2. 教你如何rEFIt-让你开机免按option!
  3. POJ 1201 差分约束(集合最小元素个数)
  4. 《CCNA安全640-554认证考试指南》——6.4节复习所有考试要点
  5. 【多线程】ThreadPoolExecutor 类的使用详解
  6. Crawler:反爬虫之基于urllib库+伪装浏览器方式实现从各种网站上(以百度贴吧为例)获得你喜欢的照片下载到本地电脑上
  7. LeetCode精讲题 10正则表达式匹配(动态规划)
  8. Sonatype Nexus 库被删除的恢复方法
  9. AngularJS学习(一)
  10. 18. Element firstChild 属性
  11. 拓端tecdat|用Rapidminer做文本挖掘的应用:情感分析
  12. BOOTSTRAP学习之路(1)
  13. 20款优秀的基于浏览器的在线代码编辑器
  14. System Exception:故障解决:端口已被占用 1080--->的处理方法
  15. mysql系统结构图_MySQL架构图
  16. 干货丨DolphinDB即时编译(JIT)详解
  17. C语言——打鱼晒网问题
  18. Imagine中文文档
  19. 工程经济作业1答案_国开电大工程经济与管理阶段作业1答案
  20. 清华大学计算机陈蓓,清华大学2010级本科生新生代表座谈会举行

热门文章

  1. 基于jenkins的go语言项目自动化发布遇到的坑
  2. webpack 错误提示 Error: Can't resolve 'css-loader'或Error: Can't resolve 'style-loader'
  3. 敏捷测试中发现的一些问题及改进办法
  4. iOS字符串常用用法
  5. JavaEE实战班第十二天
  6. JavaEE实战班第六天
  7. 从AI到IA,你愿意买一个机器人伴侣同居吗?
  8. python实现简易聊天需要登录博客园zip下载_Python基于Socket实现简易多人聊天室的示例代码...
  9. 面试官问我平时怎么看源码的,我把这篇文章甩给他了。
  10. CTO总结的管理30条军规