需要完整版PDF面试文档可扫描左侧二维码拿!

你都工作3年了,怎么还不知道MyISAM和InnoDB有什么区别?一位粉丝被面试官这样一个问题。当时,这位粉丝直接回复“不知道”,这位粉丝自己也怪不好意思的。

其实,面试官问他这个问题也不是随便问的,也是看了这位粉丝简历上写了熟练MySQL才提问的。其实,对于MySQL,这位粉丝可能只是非常熟练地完成建库、建表、往数据库表中读写数据这些简单的操作而已,并没有去了解建表的原理。

这个面试题也给我们敲了一下警钟,对于有些技术的知识点,要是没有掌握到一定深度,建议不要写熟练之类的,如果真要写,建议用了解或者熟悉这样的字眼来描述,避免面试官问起时又答不出来,暴露了自己的不足。

另外,我花了1个多星期把往期的面试题解析配套文档准备好了,想获取的小伙伴可以在我的煮叶简介中找到。

MyISAM和InnoDB到底有什么区别呢?

1、MyISAM和InnoDB的区别

MySQL 5.5以后的版本开始将InnoDB作为默认的存储引擎,之前的版本都是MyISAM。关于MyISAM和InnoDB的区别,我总结为以下5个方面,希望能帮助到大家。

1). 数据的存储结构不同

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

先来看MyISAM,每个MyISAM在磁盘上存储成三个文件,它们以表的名字开头来命名。.frm文件存储表定义。.MYD(MYD)存储数据文件。.MYI(MYIndex)存储索引文件。

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

而 InnoDB在磁盘上保存为两个文件。.frm文件同样存储为表结构文件,.ibd文件存储的是数据和索引文件。

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

由于MyISAM的索引和数据是分开存储的,因此索引查找的时候,MyISAM的叶子节点存储的是数据所在的地址,而不是数据。

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

而InnoDB叶子节点存储的是整个数据行所有的数据。

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

2). 存储空间的消耗不同

MyISAM可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

InnoDB需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。InnoDB所在的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

3). 对事务的支持不同

MyISAM强调的是性能,每次查询具有原子性,其执行速度比Innodb类型更快,但是不提供事务支持。

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

InnoDB除了提供事务支持和外部键等高级数据库功能。还具有事务提交(commit)、回滚(rollback)和崩溃修复能力(crach recovery capabilities)等这些事务安全(transaction-safe ACID compliant)型表。

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

4). 对锁的支持不同

如果只是执行大量的查询, MyISAM是更好的选择。MyISAM在增删的时候需要锁定整个表格,效率会低一些。

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

而innoDB支持行级锁,删除插入的时候只需要锁定操作行就行。如果有大量的插入、修改删除操作,使用InnoDB性能能会更高。

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

5). 对外键的支持不同

MyISAM不支持外键,而InoDB支持外键。当然,各种不同MySQL版本对两者的支持都有所改进

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

2、总结及建议

最后总结一下,MyISAM和InnoDB的主要区别包括

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

1). 数据的存储结构不同

2). 存储空间的消耗不同

3). 对事务的支持不同

4). 对锁的支持不同

5). 对外键的支持不同

MyISAM和InnoDB的区别还有很多,我这里只是列举了比较重要的几点。那我们在实际开发中,该如何选择MyISAM和InnoDB呢?我总结为以下三点:

ENTER TITLE

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

1、如果需要支持事务,选择InnoDB,不需要事务则选择MyISAM。

2、如果大部分表操作都是查询,选择MyISAM,有写又有读选InnoDB。

3、如果系统崩溃导致数据难以恢复,且成本高,不要选择MyISAM。

以上就是我对MyISAM和InnoDB区别的总结和理解,下次面试你会了吗?

 关注微信公众号『 Tom弹架构 』回复“666”或“Tom”可获取500页的pdf格式文档(附赠10万字阿里内部面试资料)。 感谢您的支持!

也可扫描下方二维码+\/免费领取完整版!

↓ ↓ ↓ ↓ ↓

MySQL存储引擎MyISAM和InnoDB的区别相关推荐

  1. 【myISAM和innoDB】mySql的引擎myisam和innodb的区别/mysiam(mysql插入速度优化)

    目录 Myisam 和Innodb 特点和擅长 Myisam 和Innodb 数据存储区别 Myisam引擎(非聚集索引--叶子节点存储数据地址的指针) Innodb引擎(聚集索引---叶子节点的da ...

  2. mysql and常用引擎_MySQL两大常用存储引擎MyISAM,InnoDB的区别

    本文主要整理了MySQL两大常用的存储引擎MyISAM,InnoDB的六大常见区别,来源于Mysql手册以及互联网的资料 InnoDB与Myisam的六大区别 MyISAM InnoDB 构 成上的区 ...

  3. MySQL - 存储引擎MyISAM和Innodb

    1. 概述 首先,我们先看一下MySQL的体系架构,对MySQL整个架构有一个直观的感受: MySQL Server架构自顶向下大致可以分网络连接层.服务层.存储引擎层和系统文件层. 存储引擎在MyS ...

  4. Mysql存储引擎MyIsAM和InnoDB区别

    Mysql 数据库中,最常用的两种引擎是innordb 和myisam.InnoDB 是Mysql 的默认存储引擎. 两者的区别: 1.事务处理上方面 MyISAM:强调的是性能,查询的速度比Inno ...

  5. MySQL 存储引擎 | MyISAM 与 InnoDB

    文章目录 概念 innodb引擎的4大特性 索引结构 InnoDB MyISAM 区别 表级锁和行级锁 概念 MyISAM 是 MySQL 的默认数据库引擎(5.5版之前),但因为不支持事务处理而被 ...

  6. MySQL 存储引擎(MyISAM、InnoDB、NDBCluster)

    前言 MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系. 由于各存储引擎功能特性差异较大 ...

  7. MySQL存储引擎MyISAM和 InnoDB

    2019独角兽企业重金招聘Python工程师标准>>> 区别 事务处理 MyISAM强调性能,但是不提供事务支持 InnoDB提供事务支持,外部键等 CURD操作 如果执行大量SEL ...

  8. mysql 两种存储引擎 MyISAM 和InnoDB

    mysql 两种存储引擎 MyISAM 和InnoDB MyISAM 是MySQL中默认的存储引擎,一般来说不是有太多人关心这个东西.决定使用什么样的存储引擎是一个很tricky的事情,但是还是值我们 ...

  9. mysql dba系统学习(20)mysql存储引擎MyISAM

    mysql存储引擎MyISAM 1,创建myisam表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 mysql> creat ...

最新文章

  1. IT行业观察:阿里巴巴有望成为下一只中国IPO
  2. CCF大数据专家委:2018年大数据发展趋势预测
  3. 使用MySQL组复制的限制和局限性
  4. [Android工具]更新安卓百度云盘百度网盘资源搜索工具,安卓网盘搜索软件
  5. 佳顺通用进销存系统去广告_免费OA办公系统的问题汇总回答
  6. SQL 查找是否存在,别再 COUNT 了,很耗费时间的
  7. SAP CRM Category创建场景
  8. 简明Python教程学习笔记_1_基本
  9. Nginx的原理解析
  10. 潘石屹没跑,他去学 Python 了
  11. 可以打开md_大祥MD型耐磨卧式多级离心泵现货出售中大泵业
  12. iOS之友盟简单分享(第三方)及sso授权问题
  13. Notepad++软件的下载与安装步骤(图文详解)
  14. 在线SAS统计分析软件使用简介(2019年最新修订)
  15. Xshell 6免费版
  16. DELMIA人机工程 ---- 二次开发 第一篇:开发指南
  17. centos7安装杀毒软件ClamAV
  18. Win10的Git中文文件名繁体火星文乱码问题
  19. 什么是项目风险?如何做好项目风险管理
  20. 花青素近红外荧光染料Cyanine5 hydrazide,Cy5 hydrazide,1427705-31-4深蓝色粉末状

热门文章

  1. 【2018-CCPC青岛网赛】 HDU - 6441 Find Integer
  2. Centos7/RedHat7安装NVIDIA显卡驱动
  3. 紫光国芯 数字后端 面经
  4. [分享]浅谈分布式数据库
  5. 【winui3】轻量笔记本应用
  6. Chef入门详解 Chef安装 Chef使用
  7. canvas 绘制八卦图
  8. PS新手教程!五分钟绘制一张半调效果的耐克体育海报
  9. 编码的奥秘:手电筒剖析
  10. linux内存管理笔记(三十四)----匿名映射