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

本文探讨了MySQL中的MyISAM和InnoDB两种存储引擎的区别。MyISAM是之前的默认引擎,适合读多写少的场景,提供全文索引功能。而InnoDB是后来引入的,侧重于事务处理和并发控制,适用于写多读少的系统。随着版本发展,InnoDB逐渐成为主流选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:在使用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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值