`
youyu4
  • 浏览: 426523 次
社区版块
存档分类
最新评论

InnoDB和MyISAM的区别

 
阅读更多

InnoDB和MyISAM的区别

 

1. 存储结构

MyISAM:索引和数据的文件分开存储,每个MyISAM在磁盘上存储成三个文件。

InnoDB:索引和数据绑在一起,所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。

 

2. 存储空间

MyISAM:可以压缩,存储空间小。静态表、动态表、压缩表。

InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。

 

3. 可移植性,备份恢复

MyISAM:数据以文件形式存储,跨平台移植方便。

InnoDB:要将数据备份成.sql文件,数据量大的话就麻烦。

 

4. 事务支持

MyISAM:不支持事务,因为要求高性能,每个查询都是原子性,比InnoDB快。

InnoDB:支持事务、外键和崩溃恢复功能。

 

5. auto_incremant

 

6. 锁

MyISAM:表锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。

InnoDB:行锁,大幅度提高了多用户并发操作的新能。但是InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。对索引加锁,而不是对数据加锁。

 

7. 全文索引

MyISAM:支持全文索引。

InnoDB:不支持全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。

 

8. 主键

MyISAM:可以允许没有索引和主键,索引都是保存地址。

InnoDB:如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。

 

9. 表的具体行数

MyISAM:记录表的行数,select count(*) 时会直接取出记录。

InnoDB:不记录表的行数,select count(*) 时会遍历所有表。

 

10. 增删改查

MyISAM:如果执行大量的select,用MyISAM会更好。

InnoDB:如果大量insert、update,应考虑InnoDB;至于删除InnoDB也更好,但DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除,在innodb上如果要清空保存有大量数据的表,最好使用truncate table这个命令。

 

11. 外键

MyISAM:不支持

InnoDB:支持

 

 

 

 

 

 参考:

http://www.jb51.net/article/62457.htm

 

 

 

 

分享到:
评论

相关推荐

    MyISAM引擎与InnoDB引擎性能的对比

    MyISAM引擎与InnoDB引擎性能的对比

    MyISAM和InnoDB的异同

    MyISAM和InnoDB的异同 MyISAM和InnoDB的异同

    MySQL存储引擎之争-InnoDB与MyISAM全面对决

    本文深入对比分析了MySQL的两大存储引擎InnoDB和MyISAM之间的区别,包括事务支持、数据恢复能力、并发控制、存储空间占用和读取性能等多个维度。通过详细的技术和场景分析, objectively评估两者的优缺点,并给出选择...

    mysql数据据存储引擎InnoDB和MyISAM的优势及区别分享.pdf

    mysql数据据存储引擎InnoDB和MyISAM的优势及区别分享.pdf

    mysql 中InnoDB和MyISAM的区别分析小结

    以下是一些细节和具体实现的差别: 1.InnoDB不支持FULLTEXT类型的索引。 2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要...

    MyISAM InnoDB 区别

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

    Innodb与Myisam引擎的区别与应用场景

    Innodb与Myisam引擎的区别与应用场景 . 区别: (1)事务处理: MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理); (2)锁机制不同: MyISAM是表级锁,而InnoDB是行级锁;

    《MYSQL备份与恢复》之 Innodb与 MyISAM引擎

    (2)innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的,innobackupex是一个perl脚本封装,封装了xtrabackup,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁。并且加入了一些...

    mysql更改引擎(InnoDB,MyISAM)的方法

    mysql默认的数据库引擎是MyISAM,不支持事务和外键,也可使用支持事务和外键的InnoDB。 查看当前数据库的所支持的数据库引擎以及默认数据库引擎 数据库支持的引擎和默认数据库引擎代码: 代码如下:show engines; ...

    myisam与innodb 区别 值得下载

    自己总结的 关于mysql存储引擎myisam innodb 的比较 两者区别 对面试会很有帮助

    Mysql InnoDB和MyISAM区别原理解析

    mysql支持很多表类型的表(即存储引擎),如myisam、innodb、memory、archive、example等。每种存储引擎都有自己的优点和缺点,充分的理解每种存储引擎,有助于合理的使用它们。有人认为在同一个数据库中使用多种...

    MyISAM与InnoDB的索引差异

    MyISAM和InnoDB都使用B+树来实现索引: • MyISAM的索引与数据分开存储 • MyISAM的索引叶子存储指针,主键索引与普通索引无太大区别 • InnoDB的聚集索引和数据行统一存储 • InnoDB的聚集索引存储数据行本身,普通...

    MySQL存储引擎,Innodb与MyISAM谁更叼?

    固定套路,问mysql数据库知识的时候,一定会带着问存储引擎,innodb,MyISAM,他们最主要的区别是索引的实现方式,然后是加锁粒度等等的区别,最后还会来到送命题你觉得选择Innodb好,还是MyISAM好,为什么?...

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

    InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度...

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

    在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问。为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的默认数据库引擎(5.5版之前),由...

    探讨:innodb与myisam在存储上有何特点和区别

    本篇文章是对innodb与myisam在存储上有何特点和区别进行了详细的分析介绍,需要的朋友参考下

    Mysql存储引擎InnoDB和Myisam的六大区别

    主要介绍了Mysql存储引擎InnoDB和Myisam的六大区别,本文从构成上、事务处理、SQL操作、自动ID、表行数等方面讲解了它的区别,需要的朋友可以参考下

    002.InnoDB索引与MyISAM索引实现的区别是什么?.mp4

    InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM...

    MySQL InnoDB和MyISAM数据引擎的差别分析

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

Global site tag (gtag.js) - Google Analytics