mysql 的存储引擎myisam和innodb的区别

前言:在使用mysql的时候,偶然发现因为mysql存储引擎的不同,导致一些功能根本无法使用,好奇之下,通过查阅资料了解到myisam和innodb两者分别在mysql中扮演的不同角色,以及二者的区别:


首先介绍下两种存储引擎:

myisam:myisam是mysql的默认数据库引擎(5.5版以前),有更早期的isam(有索引的顺序访问方法,mysql5.1不支持)所改良。支持fulltext(全文类型)的索引,对于读多写少的数据库而言,性能极佳。

因为myisam不支持事务回滚,因此这几年mysql引入一个新的引擎 innodb,以强化参考完整性与并发违规处理机制,并逐渐取代了myisam


innodb:innodb是mysql后来研发,并且目前(mysql5.5版本后)使用较多的存储引擎。



二者区别:


innodb

myisam

事务

支持

不支持

锁读取

不加锁读取,支持行锁

外键

支持

不支持

fulltext

不支持fulltext的索引

支持

跨平台拷贝

支持

很难

增删改查操作

1. 如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表

  2.DELETE   FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

 1.select,执行查询操作速度快。

2.deletemyisam执行delete是先drop表,然后重新建表

查询count()

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

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

AUTO_INCREMENT

Innodb必须包含auto_increment的索引

可以使用auto_increment类型字段建立索引

其他

表格难被压缩

表格可以被压缩

总结:

因为myisam相对innodb简单,所以效率比较高,如果是读多写少的系统,建议选择myisam。

但是如果系统写多读少,innodb是首发的选择(如果对两种敏感度不高,建议使用innodb)


猜你喜欢

转载自blog.csdn.net/hxfghgh/article/details/80148712