转载自  MySQL存储引擎中MyISAM和InnoDB区别

MyISAM 和InnoDB 讲解
  InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。
  以下是一些细节和具体实现的差别:

  ◆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%”
  两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁。而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用。
  作为使用MySQL的用户角度出发,Innodb和MyISAM都是比较喜欢的,如果数据库平台要达到需求:99.9%的稳定性,方便的扩展性和高可用性来说的话,MyISAM绝对是首选。
  原因如下:

  1、平台上承载的大部分项目是读多写少的项目,而MyISAM的读性能是比Innodb强不少的。
  2、MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小。
  3、经常隔1,2个月就会发生应用开发人员不小心update一个表where写的范围不对,导致这个表没法正常用了,这个时候MyISAM的优越性就体现出来了,随便从当天拷贝的压缩包取出对应表的文件,随便放到一个数据库目录下,然后dump成sql再导回到主库,并把对应的binlog补上。如果是Innodb,恐怕不可能有这么快速度,别和我说让Innodb定期用导出xxx.sql机制备份,因为最小的一个数据库实例的数据量基本都是几十G大小。
  4、从接触的应用逻辑来说,select count(*) 和order by 是最频繁的,大概能占了整个sql总语句的60%以上的操作,而这种操作Innodb其实也是会锁表的,很多人以为Innodb是行级锁,那个只是where对它主键是有效,非主键的都会锁全表的。
  5、还有就是经常有很多应用部门需要我给他们定期某些表的数据,MyISAM的话很方便,只要发给他们对应那表的frm.MYD,MYI的文件,让他们自己在对应版本的数据库启动就行,而Innodb就需要导出xxx.sql了,因为光给别人文件,受字典数据文件的影响,对方是无法使用的。
  6、如果和MyISAM比insert写操作的话,Innodb还达不到MyISAM的写性能,如果是针对基于索引的update操作,虽然MyISAM可能会逊色Innodb,但是那么高并发的写,从库能否追的上也是一个问题,还不如通过多实例分库分表架构来解决。
  7、如果是用MyISAM的话,merge引擎可以大大加快应用部门的开发速度,他们只要对这个merge表做一些select count(*)操作,非常适合大项目总量约几亿的rows某一类型(如日志,调查统计)的业务表。

  当然Innodb也不是绝对不用,用事务的项目就用Innodb的。另外,可能有人会说你MyISAM无法抗太多写操作,但是可以通过架构来弥补。

MySQL存储引擎中MyISAM和InnoDB区别相关推荐

  1. MySQL存储引擎之Myisam和Innodb总结性梳理

    Mysql有两种常用的存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比   MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名 ...

  2. MySQL存储引擎、MyISAM、InnoDB

    一. MySQL存储引擎MyISAM与InnoDB如何选择 MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM.InnoDB.MERGE.MEMORY(HEAP).B ...

  3. mysql 主库innodb从库myisam_MySQL的两种常用数据库存储引擎:MyISAM与InnoDB

    问题1:MySQL的data里的网站数据库里只有.frm 而没有.MYD和.MYI文件? 解释:首先排除误删的情况,那么,你的此数据库的存储引擎可能为innoDB类型(把数据库导入为.sql后,可以在 ...

  4. MySQL 两种存储引擎:MyISAM与InnoDB对比及理解

    MySQL 两种存储引擎:MyISAM与InnoDB对比及理解 目前MySQL默认的存储引擎是InnoDB 现在大多数时候我们使用的都是InnoDB存储引擎,但是在某些情况下使用MyISAM更好,比如 ...

  5. myisam为什么比innodb查询快_mysql存储引擎之MyISAM 和 InnoDB的比较

    一.什么是存储引擎 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和 ...

  6. mysql存储引擎中INNODB和MyISAM的区别

    切记:存储引擎是基于表的,而不是数据库. 存储引擎概念: MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不 ...

  7. MySQL存储引擎:MyISAM InnoDB

    存储引擎 现实生活中我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存表格用excel,存图片用png等.数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制, ...

  8. Mysql第三章:存储引擎(MyISAM和Innodb)

    目录 1:什么是存储引擎 2:常用存储引擎 2.1:MyISAM特点 2.2:Innodb特征 2.2.1:Innodb优点 2.2.2:innoDB内存模型 3:MVCC多版本控制器 3.1:首先了 ...

  9. MySQL存储引擎详解(一)-InnoDB架构

    目录 前言 一.支持的存储引擎 二.InnoDB引擎 1.Buffer Pool 传统LUR算法 预读 预读失效 2.Log Buffer 3.Adaptive Hash Index 4.Change ...

最新文章

  1. 提效工具git的基本使用
  2. Yii2.0 limit(1)与one()
  3. 我觉得有不少人被Spring带着跑偏了!
  4. 阿里云混合云Apsara Stack 2.0发布,加速政企数智创新
  5. java旺季机票_java-第四章-机票价格受到淡季旺季的影响,编写的小程序
  6. 矩阵的二范数_Python Numpy中的范数
  7. 如何安装python3.8_python3.8下载及安装步骤详解
  8. c语言趣味程序设计编程100例精解,c趣味编程100例
  9. 20个MySQL高性能架构设计原则(收藏版)
  10. 应对计算机领域中后门,网络课程论坛中长尾现象的应对策略——以《计算机应用基础》网络课程为例...
  11. tenorflow异常集合(自用记录)
  12. GNU Make笔记
  13. 游戏开发工具,让你事半功倍!
  14. golang对接paypal支付
  15. C# 如何生成CHM帮助文件
  16. 华为手机怎样修改HTML查看器,华为WS5200路由器用手机怎么设置?
  17. 基于RPA的自动化测试研究
  18. 图6——深度遍历无向图
  19. python爬虫:requests和urllib爬豆瓣Top250
  20. 什么是倒排索引?(转)

热门文章

  1. 并查集的相关知识详解 Come baby!!!
  2. [SpringBoot2]数据访问_数据库场景的自动配置分析和整合测试
  3. [数据结构-严蔚敏版]P95矩阵压缩-特殊矩阵的存储(对称矩阵,三角矩阵)
  4. [JavaWeb-MySQL]DML_操作表
  5. 算法题目中常见的几种输入小点-gets,cin,scanf,getline,sstream
  6. 数据结构---哈夫曼树
  7. GPU Shader 编程基础
  8. P2761 软件补丁问题
  9. [2021-07-19 内测NOIP] 操作(状压DP),异或(字典树),等级(线段树),矩阵(DP)
  10. [2020-11-24 contest]糖果机器(二维偏序),手套(状压dp),甲虫(区间dp),选举(线段树 最大子段和)