【MySQL】InnoDB和MyISAM引擎的区别

对事务的支持

InnoDB:支持
MyISAM:不支持

存储结构

InnoDB:将数据表分成2个部分存储,后缀为frm的文件存储表结构,后缀为ibd的文件存储数据和索引
MyISAM:将数据表分成3个部分存储,后缀为frm的文件存储表结构,后缀为MYD的文件存储数据,后缀为MYI的文件存储索引

表锁差异

InnoDB:支持行级锁,行级锁大幅提高了多用户并发操作的性能;但是InnoDB的行锁是基于索引的,所以如果索引失效(例如查询条件若包含两个不同数据类型的比较,则隐式类型转换将导致索引失效)或未使用索引将导致行锁升级为表锁
MyISAM:只支持表级锁

主键差异

InnoDB:任何数据表必须有主键,若没有设定主键或非空唯一索引,则会自动生成一个6字节的主键(用户不可见);数据是主键的一部分,附加索引保存的是主键的值
MyISAM:允许建立没有主键或索引的表,索引保存的是每一行的地址

表的行数

InnoDB:没有保存表的总行数,如果执行select count() from table;将会遍历整个表,消耗大
MyISAM:保存有表的总行数,如果执行select count() from table;将会直接取出该值,快捷且迅速;但是在加了where条件后InnoDBMyISAM处理方式都一样

操作性能

InnoDB:如果要执行大量insertupdate操作,应该使用InnoDB表,delete操作从性能上考虑InnoDB更优,但执行delete from table时数据将会被一行一行的删除,如果要删除大量数据最好使用truncate table
MyISAM:如果要执行大量的select那么MyISAM是更好的选择

外键差异

InnoDB:支持
MyISAM:不支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值