MySQL存储引擎MyISAM和InnoDB的区别
需要完整版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的区别相关推荐
- 【myISAM和innoDB】mySql的引擎myisam和innodb的区别/mysiam(mysql插入速度优化)
目录 Myisam 和Innodb 特点和擅长 Myisam 和Innodb 数据存储区别 Myisam引擎(非聚集索引--叶子节点存储数据地址的指针) Innodb引擎(聚集索引---叶子节点的da ...
- mysql and常用引擎_MySQL两大常用存储引擎MyISAM,InnoDB的区别
本文主要整理了MySQL两大常用的存储引擎MyISAM,InnoDB的六大常见区别,来源于Mysql手册以及互联网的资料 InnoDB与Myisam的六大区别 MyISAM InnoDB 构 成上的区 ...
- MySQL - 存储引擎MyISAM和Innodb
1. 概述 首先,我们先看一下MySQL的体系架构,对MySQL整个架构有一个直观的感受: MySQL Server架构自顶向下大致可以分网络连接层.服务层.存储引擎层和系统文件层. 存储引擎在MyS ...
- Mysql存储引擎MyIsAM和InnoDB区别
Mysql 数据库中,最常用的两种引擎是innordb 和myisam.InnoDB 是Mysql 的默认存储引擎. 两者的区别: 1.事务处理上方面 MyISAM:强调的是性能,查询的速度比Inno ...
- MySQL 存储引擎 | MyISAM 与 InnoDB
文章目录 概念 innodb引擎的4大特性 索引结构 InnoDB MyISAM 区别 表级锁和行级锁 概念 MyISAM 是 MySQL 的默认数据库引擎(5.5版之前),但因为不支持事务处理而被 ...
- MySQL 存储引擎(MyISAM、InnoDB、NDBCluster)
前言 MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系. 由于各存储引擎功能特性差异较大 ...
- MySQL存储引擎MyISAM和 InnoDB
2019独角兽企业重金招聘Python工程师标准>>> 区别 事务处理 MyISAM强调性能,但是不提供事务支持 InnoDB提供事务支持,外部键等 CURD操作 如果执行大量SEL ...
- mysql 两种存储引擎 MyISAM 和InnoDB
mysql 两种存储引擎 MyISAM 和InnoDB MyISAM 是MySQL中默认的存储引擎,一般来说不是有太多人关心这个东西.决定使用什么样的存储引擎是一个很tricky的事情,但是还是值我们 ...
- 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 ...
最新文章
- IT行业观察:阿里巴巴有望成为下一只中国IPO
- CCF大数据专家委:2018年大数据发展趋势预测
- 使用MySQL组复制的限制和局限性
- [Android工具]更新安卓百度云盘百度网盘资源搜索工具,安卓网盘搜索软件
- 佳顺通用进销存系统去广告_免费OA办公系统的问题汇总回答
- SQL 查找是否存在,别再 COUNT 了,很耗费时间的
- SAP CRM Category创建场景
- 简明Python教程学习笔记_1_基本
- Nginx的原理解析
- 潘石屹没跑,他去学 Python 了
- 可以打开md_大祥MD型耐磨卧式多级离心泵现货出售中大泵业
- iOS之友盟简单分享(第三方)及sso授权问题
- Notepad++软件的下载与安装步骤(图文详解)
- 在线SAS统计分析软件使用简介(2019年最新修订)
- Xshell 6免费版
- DELMIA人机工程 ---- 二次开发 第一篇:开发指南
- centos7安装杀毒软件ClamAV
- Win10的Git中文文件名繁体火星文乱码问题
- 什么是项目风险?如何做好项目风险管理
- 花青素近红外荧光染料Cyanine5 hydrazide,Cy5 hydrazide,1427705-31-4深蓝色粉末状