最新消息:欢迎加入小松的QQ群一起讨论一起学习,本站启用elasticsearch全文检索系统,提供搜索的精确度

mysql数据库MyISAM InnoDB 8大区别详解

MYSQL 1805浏览 0评论

mysql数据库MyISAM InnoDB 8大区别详解

在平时的开发中经常用到的mysql数据类型是InnoDB和MyISAM,今天来总结一下这两种数据类型的8大区别
1、文件存储的区别
MyISAM的一个表会存成3个文件
.frm 与表相关的元数据信息都存放在frm文件,包括表结构的定义信息等
.MYD(MYData)myisam存储引擎专用,用于存储myisam表的数据
.MYI(MYIndex)myisam存储引擎专用,用于存储myisam表的索引相关信息
InnoDB物理文件结构
.frm文件包括表结构的定义信息等
.ibd文件独享表空间存储方式
.ibdata文件共享表空间存储方式
.ibd文件和.ibdata通过配置来决定是使用共享表空间存放存储数据,还是用独享表空间存放存储数据。
2、事务处理
MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持
InnoDB提供事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表
3、锁
MyISAM 表级锁它不会出现死锁问题
InnoDB 支持行级锁和表级锁默认为行级锁
4、FULLTEXT类型
InnoDB不支持FULLTEXT类型的索引,之前面试的时候,有回答到InnoDB不支持全文索引,面试官说支持我直接无语
MyISAM支持FULLTEXT
5、count
InnoDB 中不保存表的具体行数也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。
注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
6、MyISAM引擎不支持外键,InnoDB支持外键
7、MyISAM引擎的表在大量高并发的读写下会经常出现表损坏的情况
8、MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储直接复制,InnoDB不行
没有完美的表类型,只有合适自己业务的表类型,在查询比较多的清楚下建议使用MyISAM,速度不InnoDB快很多

QQ交流群:136351212

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
转载保留版权:小松博客» mysql数据库MyISAM InnoDB 8大区别详解
本文链接地址:https://www.phpsong.com/588.html

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
木有头像就木有JJ!点这里按步骤申请Gravatar头像吧!