温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MyISAM和InnoDB存储引擎的区别是什么

发布时间:2023-04-28 10:51:17 来源:亿速云 阅读:126 作者:iii 栏目:开发技术

本篇内容主要讲解“MyISAM和InnoDB存储引擎的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MyISAM和InnoDB存储引擎的区别是什么”吧!

    前言

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

    MyISAM和InnoDB存储引擎的区别是什么

    存储引擎

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

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

    show engines; //查看存储引擎

    MyISAM和InnoDB存储引擎的区别是什么

    MyISAM和InnoDB存储引擎的区别是什么

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

    区别

    说区别之前说一下他俩的索引底层都是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,跟着主流走不会错。

    到此,相信大家对“MyISAM和InnoDB存储引擎的区别是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI