mysql 存储引擎 面试_面试官:你用过mysql哪些存储引擎,请分别展开介绍一下
这是高级开发者面试时经常被问的问题。实际我们在平时的开发中,经常会遇到的,在用SQLyog等工具创建表时,就有一个引擎项要你去选。如下图:
Mysql的存储引擎有这么多种,实际我们在平时用的最多的莫过于InnoDB和MyISAM了。
所有如果面试官问道mysql有哪些存储引擎,你只需要告诉这两个常用的就行。
那他们都有什么特点和区别呢?
MyISAM和InnoDB的特点:
MyISAM :默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。不是事务安全的,而且不支持外键,如果执行大量的select,insert MyISAM比较适合。
InnoDB :支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。注: 在MySQL 5.5之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。
MyISAM和InnoDB的区别:
InnoDB支持事务,MyISAM不支持。对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;
InnoDB支持外键,而MyISAM不支持。
InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高。MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。
InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快。
Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;5.7以后的InnoDB支持全文索引了。
InnoDB支持表、行级锁(默认),而MyISAM支持表级锁。
InnoDB表必须有主键(用户没有指定的话会自己找或生产一个主键),而Myisam可以没有。
Innodb存储文件有frm、ibd,而Myisam是frm、MYD、MYI。
Innodb:frm是表定义文件,ibd是数据文件。
Myisam:frm是表定义文件,myd是数据文件,myi是索引文件。
最后:
本次分享就到这里,相信通过上面的文章,你已经对InnoDB和MyISAM有一个基本的认识了,但是你仅仅知道这一些是不够的,在接下来的一段时间里,我会继续在我的公众号:Java技术zhai 总结一些面试中的问题共享给大家。
mysql 存储引擎 面试_面试官:你用过mysql哪些存储引擎,请分别展开介绍一下相关推荐
- mysql 修改字段长度_面试官:InnoDB记录存储结构都不知道,你敢说你懂MySQL?
前言 了解MySQL的人都知道,MySQL服务器上负责对表中数据的读取和写入工作的部分是存储引擎,而MySQL的存储引擎有MyISAM和InnoDB.不同的存储引擎一般是由不同的人为实现不同的特性而开 ...
- 3mysql的引擎哪_你知道哪几种MySQL存储引擎?
0 1 前 言 存储引擎是数据库的核心,对于mysql来说,存储引擎是以插件的形式运行的.虽然mysql支持种类繁多的存储引擎,但是常用的就那么几种.这篇文章主要是对其进行一个总结和对比. 我们可以使 ...
- mysql索引级别快慢_面试小点-MySQL 的两种索引方法如何提高查询速度
MySQL 索引的建立对于 MySQL 的高效运行是很重要的,索引可以大大提高 MySQL 的检索速度. 索引方法 Mysql 的索引方法有两种,BTERR 和 HASH. 散列表(Hash Tabl ...
- mysql sql语句优化面试_面试不要一把梭了,这才是SQL优化的正确姿势
全文内容预览: 所以,在开始之前(MySQL 优化),咱们先来聊聊性能优化的一些原则. 性能优化原则和分类 性能优化一般可以分为:主动优化 被动优化 所谓的主动优化是指不需要外力的推动而自发进行的一种 ...
- python web前端开发面试_面试前端,听听别人怎么说!
分享一个人的面试经验: 一年半经验,百度.有赞.阿里面试总结 前言 人家都说,前端需要每年定期出来面面试,衡量一下自己当前的技术水平以及价值,本人17年7月份,毕业到现在都没出来试过,也没很想换工作, ...
- 数据暑假实习面试_面试数据科学实习如何准备
数据暑假实习面试 Unfortunately, on this occasion, your application was not successful, and we have appointed ...
- 南方航空java面试_面试经验 南航面试经历分享
南方航空面试经历分享 前言 每个人的成功经验都是来之不易的,今天小V的面经写得有点长,为了给大家写的详细一些,参考多一些,也是拼了! 小V的基本情况:小V是一名大三的在校学生,学的还是搬砖的理工科专业 ...
- mysql 默认当前时间_复制信息记录表|全方位认识 mysql 系统库
在上一期<时区信息记录表|全方位认识 mysql 系统库>中,我们详细介绍了mysql系统库中的时区信息记录表,本期我们将为大家带来系列第七篇<复制信息记录表|全方位认识 mysql ...
- mysql blob 内容查看_这些被你忽视的MySQL细节,可能会让你丢饭碗!
我们在 MySQL 入门篇主要介绍了基本的 SQL 命令.数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我 ...
- mysql 密码hash算法_如何用hash创建一个mySQL用户(‘sha256’,$salt.$password)?
我肯定错过了什么. 我想为select-only事务设置数据库用户帐户,但mysql不允许我在创建用户帐户时选择密码的哈希方法. 这失败了: GRANT SELECT ON myDB.* TO 'se ...
最新文章
- 问题解决:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
- 第二十四章:页面导航(五)
- 新手第一课-什么是深度学习
- JavaWeb课程复习资料(六)——DAO与DAOImpl层封装
- POJ 3159 Candies(差分约束+SPAF)
- 深度揭秘Twitter的新一代流处理引擎Heron
- Lasso回归算法: 坐标轴下降法与最小角回归法小结
- Spring框架之演示JDBC的模板类
- 引用echar显示图形
- java 抓取搜狗微信_大虾们,求帮助……用httpclient 进行获取微信搜狗公众号文章问题...
- 医学与计算机领域融合的发展前景,浅谈对超声医学的发展现状与前景之探究
- android获取ssid,Android系绳 – 获取当前的SSID
- CAD绘制粗略的示坡线
- 猫是如何躲开影子的?
- 基于java+Mysql的志愿者管理系统代码分享
- AE教程丨星球文字环绕特效
- Mycat生产实践---数据迁移与扩容实践
- 业务规则引擎:Code Effects 5.X Crack-New
- 简易新闻系统,功能包含用户登录、新闻发布删除、评论管理等
- 51nod 2534 最小旅行路线------------------------------dp