Mysql 存储引擎中InnoDB与Myisam的主要区别

转载 2016年06月01日 19:14:26
1,务处理
innodb 支持事务功能,myisam 不支持。
Myisam 的执行速度更快,性能更好。

2,select ,update ,insert ,delete 操作

MyISAM:如果执行大量的SELECT,MyISAM是更好的选择
InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表

3,锁机制不同

InnoDB 为行级锁,myisam 为表级锁。
注意:当数据库无法确定,所找的行时,也会变为锁定整个表。
如: update table set num = 10 where username like "%test%";

4,查询表的行数不同
MyISAM:select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含   where条件时,两种表的操作是一样的

InnoDB : InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行

5,物理结构不同

MyISAM :每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。
  .frm文件存储表定义。
  数据文件的扩展名为.MYD (MYData)。
  索引文件的扩展名是.MYI (MYIndex)

InnoDB:基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB
6,anto_increment 机制不同
 更好和更快的auto_increment处理

其他:为什么MyISAM会比Innodb 的查询速度快。
INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多;
1)数据块,INNODB要缓存,MYISAM只缓存索引块,  这中间还有换进换出的减少; 
2)innodb寻址要映射到块,再到行,MYISAM 记录的直接是文件的OFFSET,定位比INNODB要快
3)INNODB还需要维护MVCC一致;虽然你的场景没有,但他还是需要去检查和维护
MVCC ( Multi-Version Concurrency Control )多版本并发控制 
InnoDB:通过为每一行记录添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另外一个记录这行数据何时过期(或者被删除)。但是InnoDB并不存储这些事件发生时的实际时间,相反它只存储这些事件发生时的系统版本号。这是一个随着事务的创建而不断增长的数字。每个事务在事务开始时会记录它自己的系统版本号。每个查询必须去检查每行数据的版本号与事务的版本号是否相同。让我们来看看当隔离级别是REPEATABLE READ时这种策略是如何应用到特定的操作的:
  SELECT InnoDB必须每行数据来保证它符合两个条件:
  1、InnoDB必须找到一个行的版本,它至少要和事务的版本一样老(也即它的版本号不大于事务的版本号)。这保证了不管是事务开始之前,或者事务创建时,或者修改了这行数据的时候,这行数据是存在的。
  2、这行数据的删除版本必须是未定义的或者比事务版本要大。这可以保证在事务开始之前这行数据没有被删除。

MySQL存储引擎InnoDB与Myisam的六大区别

MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FED...
  • liu857279611
  • liu857279611
  • 2016年06月01日 20:50
  • 421

Mysql 存储引擎中InnoDB与Myisam的主要区别

1、事务处理 innodb 支持事务功能,myisam 不支持。 Myisam 的执行速度更快,性能更好。 2、select ,update ,insert ,delet...
  • wlzx120
  • wlzx120
  • 2016年12月29日 09:24
  • 2353

MySQL存储引擎中的MyISAM和InnoDB区别详解

在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问。为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的...
  • lc0817
  • lc0817
  • 2016年10月08日 15:39
  • 1518

MYSQL数据库引擎 MYISAM和 INNODB区别

1、 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文...
  • Alen_xiaoxin
  • Alen_xiaoxin
  • 2017年03月09日 16:04
  • 815

MySQL架构设计——MyISAM存储引擎与InnoDB存储引擎

从MySQL5.1开始,MySQL引入了一个新的概念,插件式存储引擎体系结构。可以做到存储引擎层与SQL层各自更为独立,耦合更小,最重要的是方便了存储引擎的加载与移出,可以做到运行时加载新的存储引擎,...
  • zhangliangzi
  • zhangliangzi
  • 2016年05月12日 14:32
  • 2183

MySQL存储引擎--MyISAM与InnoDB区别

MyISAM 和InnoDB 讲解   InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级...
  • xifeijian
  • xifeijian
  • 2014年03月03日 22:29
  • 182371

mysql数据库-MyISAM与InnoDB两个存储引擎的索引实现方式

1.MyISAM索引实现:主键索引:MyISAM数据存储文件和索引文件是分开的。MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM主键索引的原理...
  • chenchaofuck1
  • chenchaofuck1
  • 2016年05月12日 16:42
  • 1015

mysql更改表引擎INNODB为MyISAM的方法总结

mysql数据库分类为INNODB为MyISAM两种表存储引擎了,两种各有优化在不同类型网站可能选择不同,下面小编为各位介绍mysql更改表引擎INNODB为MyISAM技巧。 常见的mysql...
  • luoxq111
  • luoxq111
  • 2017年01月16日 11:16
  • 3977

InnoDB还是MyISAM 再谈MySQL存储引擎的选择

作为MySQL数据库的两种主要的存储引擎,MyISAM和Innodb各有长处,本文的作者探讨了MyISAM不只适合小型项目,它的稳定性、扩展性和高可用性让作者对它情有独钟。...
  • hu2010shuai
  • hu2010shuai
  • 2017年02月07日 10:52
  • 447

MySQL数据库之MyISAM与InnoDB的区别

MySQL数据库之MyISAM与InnoDB的区别 从以下几个方面: 1、存储结构  每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。  ....
  • chajinglong
  • chajinglong
  • 2017年02月23日 10:58
  • 1552
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mysql 存储引擎中InnoDB与Myisam的主要区别
举报原因:
原因补充:

(最多只允许输入30个字)