返回顶部
首页 > 资讯 > 数据库 >MyISAM和InnoDB存储引擎的区别
  • 790
分享到

MyISAM和InnoDB存储引擎的区别

数据库mysqljava 2023-08-17 06:08:16 790人浏览 独家记忆
摘要

目录 前言存储引擎 区别事务外键表单的存储数据查询效率数据更新效率 如何选择 前言 MyISAM和InnoDB是使用Mysql最常用的两种存储引擎,在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoD

前言

MyISAM和InnoDB是使用Mysql最常用的两种存储引擎,在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoDB存储引擎。

在这里插入图片描述

存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

mysql的核心就是插件式存储引擎,支持多种存储引擎

show engines; //查看存储引擎

在这里插入图片描述

在这里插入图片描述

关于数据库的大致架构和基础操作,参考本人博客,这里不过多介绍;

区别

说区别之前说一下他俩的索引底层都是BTREE+ , B+树的数据结构维护索引和数据(m是非聚簇索引,i是聚簇索引,这点注意下)参考本人博客

事务

  • InnoDB支持事务,具有安全性和完整性,系统容灾性强,且通过使用多版本并发控制MVCC来获得高并发性; 参考本人博客
  • MyISAM不支持事务; 系统容灾性弱;

外键

  • InnoDB支持外键
  • MyISAM不支持外键

因此把一个有外键的InnoDB表单转换成MyISAM表单会失败;

表单的存储

通过使用不同存储引擎建立表单查看生成的对应存储文件,发现除了双方共有的 .frm存储表属性外:

  • InnoDB存储引擎表单独存放到一个独立的IBD文件中;(索引和数据放在了一起)–>聚簇索引–>通过主键索引效率高; 普通键进行索引可能需要回表;

  • MyISAM存储引擎表单MYDMYI两部分组成,其中MYD(MYData)用来存放数据文件,而MYI(MYIndex)则用来存放索引文件–>非聚簇索引–>数据存放的是指针,不需要回表,主键索引和普通键索引分开了;

数据查询效率

  • InnoDB不支持全文索引,而 MyISAM 支持全文索引查询效率上 MyISAM更高;
  • InnoDB不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。而 MyISAM 用一个变量保存了整个表的行数,执行上述语句时
    只需要读出该变量即可,速度很快;

数据更新效率

InnoDB的内部优化,包括**磁盘预读(**从磁盘读取数据时采用可预测性读取),自适应哈希(自动在内存中创建hash索引以加速读操作)等, 且能够加速插入操作的插入缓冲区。所以比MyISAM在数据更新能力上更优;

如何选择

  1. 看设计的业务是否需要支持事务,需要–InnoDB;不需要–MyISAM;
  2. 如果select读操作频繁,用MyISAM; 如果数据更新操作使用频繁操作用InnoDB
  3. 考虑系统容灾能力,MyISAM更不容易恢复,InnoDB容易恢复;

既然Mysql5.5版本之后默认了InnoDB,不知道用什么那就InnoDB,跟着主流走不会错;

来源地址:https://blog.csdn.net/wtl666_6/article/details/128822654

您可能感兴趣的文档:

--结束END--

本文标题: MyISAM和InnoDB存储引擎的区别

本文链接: https://www.lsjlt.com/news/372405.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作