mysql5.5之前默认的存储引擎MyISAM,5.5后默认InnoDB
InnoDB和MyISAM区别:
特点不同:
InnoDB支持外键,支持事务,Innodb为行级锁,适合高并发的操作,MyISAM为表级锁,不适合高并发的操作,且MyISAM不支持事务、外键
数据文件存储目录结构不同
mysql5.7:
采用独立表空间时,InnoDB针对具体的表会生成
.opt
文件,.frm
文件,.ibd
文件,其中.opt
文件文件用于保存数据库的相关配置,比如:字符集、比较规则,.frm
文件描述表结构,字段长度等信息,.ibd
用于保存数据和索引。如果采用系统表空间时,数据信息和索引信息都存储在ibdata1
中;MyISAM会生成表名
.frm
,.MYD
,.MYI
文件,其中.frm
文件存储表结构,.MYD
文件存储数据 (MYData),.MYI
文件存储索引 (MYIndex)mysql8.0:
InnoDB相对于5.7不再提供
.opt
文件和.frm
文件,而是合并在.ibd
文件中。MyISAM相对于5.7描述表结构文件名从.frm
变为.sdi
小结:
对于数据文件存储目录结构不同,InnoDB索引和数据共同存储,MyISAM索引和数据分开存储,基于这一点,MyISAM只缓存索引,不缓存真实数据,InnoDB不仅缓存索引还要缓存真实数据,InnoDB会占用更多的磁盘空间以保存数据和索引且写的处理效率一些相较于MyISAM差一些。
总结:
除了增加和查询外,还需要更新、删除操作,高并发的操作,应优先选择InnoDB,MyISAM优势是访问的速度快,对事务完整性没有要求或者以SELECT、INSERT为主的,没有高并发的操作的选择MyISAM,总之节省资源、消耗少、简单业务选MyISAM,并发写、事务、更大资源选InnoDB
- 本文作者: zzr
- 本文链接: http://zzruei.github.io/2023/0197da0cdb.html
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!