栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面试官:你知道在MySQL数据库中MyISAM和InnoDB有什么区别吗?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面试官:你知道在MySQL数据库中MyISAM和InnoDB有什么区别吗?

你知道在MySQL数据库中MyISAM和InnoDB有什么区别吗?

作为一名软件开发者,对于mysql数据库,或多或少都会有所了解。

张工是一名程序员,有3年多开发经验,这3年主要是做java后端开发的,有次到广州一家软件公司应聘java开发岗位,面试官问了他这样一个问题:

你知道在MySQL数据库中MyISAM和InnoDB有什么区别吗?

面试官问他这个问题也不是随便问的,面试是看了张工的简历写着熟悉mysql才提问的。

其实对于mysql,张工平时也只是简单地用mysql建表,然后往数据表里写数据,查数据这样的简单操作,而没有去了解建表的原理。

对于这个问题,张工一下子也不知道两者到底有什么区别,于是直接回复他,“不知道”。

谁知面试官“你都工作3年了,怎么连MyISAM和InnoDB有什么区别都不知道?”

被面试官这么一说,张工都有些不好意思了。都怪自己平时做项目时只知道完成任务,而没有去了解其原理。

从张工这次面试,也给我们敲了下警钟,对于有些技术知识点,要是没有掌握,建议简历上不要写熟悉之类的,如果真要写,建议用了解这样的字样来描述。避免面试官问起时回答不出来,暴露了自己的不足。

那么在mysql数据库中MyISAM和InnoDB两者有什么区别呢,我们来简单了解下。

首先我们来看看我们自己正在使用的数据库采用的是什么引擎?

我们可以用下面的命令查看:

SHOW ENGINES;

从中我们可以看出mysql数据库为我们提供了非常多的存储引擎,从表中看出,InnoDB 的 Support 列是 DEFAULT,这就说明你正在使用的数据库服务器上,InnoDB 是默认的数据库引擎,不过 MySQL 对于多引擎有很好的兼容,一个数据库服务器上不同的数据库完全可以使用不同的数据引擎,甚至一个数据库中的多个表也可以使用不同的引擎。

下面我们来看看MyISAM和InnoDB两者有什么区别?

MyISAM

不支持事务,所以每次查询都是原子的;

支持表级锁,即每次操作是对整个表加锁;

存储表的总行数;

一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;

采用非聚集索引(Non-clustered),索引文件的数据域存储指向数据文件的指针。

InnoDb

支持ACID的事务;

支持行级锁及外键约束;

不存储总行数;

一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个,受操作系统文件大小的限制;

主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;使用自增主键,防止插入数据时,为维持B+树结构,文件的大调整。

总结

作为一名程序员,平时在使用一些知识点时,建议要了解其原理,而不是停留在只会用的层面,需要了解 InnoDB 和 MyISAM 在使用上的区别,如果有兴趣,还有必要深入研究为什么会有哪些区别的话,这就需要了解其底层的实现原理,以及对 B+ 树有一定的了解。

如果你比较清晰地了解其背后的原理概要了,那么和面试官交流起来就会很舒服了,相信能为这次面试加分,被录用的概率就大大提高了。

由于笔者知识及水平有限,文中错漏之处在所难免,如有不足之处,欢迎交流。

-END-

微信公众号:爱开发

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727476.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号