这是高级开发者面试时经常被问的问题。实际我们在平时的开发中,经常会遇到的,在用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哪些存储引擎,请分别展开介绍一下相关推荐

  1. mysql 修改字段长度_面试官:InnoDB记录存储结构都不知道,你敢说你懂MySQL?

    前言 了解MySQL的人都知道,MySQL服务器上负责对表中数据的读取和写入工作的部分是存储引擎,而MySQL的存储引擎有MyISAM和InnoDB.不同的存储引擎一般是由不同的人为实现不同的特性而开 ...

  2. 3mysql的引擎哪_你知道哪几种MySQL存储引擎?

    0 1 前 言 存储引擎是数据库的核心,对于mysql来说,存储引擎是以插件的形式运行的.虽然mysql支持种类繁多的存储引擎,但是常用的就那么几种.这篇文章主要是对其进行一个总结和对比. 我们可以使 ...

  3. mysql索引级别快慢_面试小点-MySQL 的两种索引方法如何提高查询速度

    MySQL 索引的建立对于 MySQL 的高效运行是很重要的,索引可以大大提高 MySQL 的检索速度. 索引方法 Mysql 的索引方法有两种,BTERR 和 HASH. 散列表(Hash Tabl ...

  4. mysql sql语句优化面试_面试不要一把梭了,这才是SQL优化的正确姿势

    全文内容预览: 所以,在开始之前(MySQL 优化),咱们先来聊聊性能优化的一些原则. 性能优化原则和分类 性能优化一般可以分为:主动优化 被动优化 所谓的主动优化是指不需要外力的推动而自发进行的一种 ...

  5. python web前端开发面试_面试前端,听听别人怎么说!

    分享一个人的面试经验: 一年半经验,百度.有赞.阿里面试总结 前言 人家都说,前端需要每年定期出来面面试,衡量一下自己当前的技术水平以及价值,本人17年7月份,毕业到现在都没出来试过,也没很想换工作, ...

  6. 数据暑假实习面试_面试数据科学实习如何准备

    数据暑假实习面试 Unfortunately, on this occasion, your application was not successful, and we have appointed ...

  7. 南方航空java面试_面试经验 南航面试经历分享

    南方航空面试经历分享 前言 每个人的成功经验都是来之不易的,今天小V的面经写得有点长,为了给大家写的详细一些,参考多一些,也是拼了! 小V的基本情况:小V是一名大三的在校学生,学的还是搬砖的理工科专业 ...

  8. mysql 默认当前时间_复制信息记录表|全方位认识 mysql 系统库

    在上一期<时区信息记录表|全方位认识 mysql 系统库>中,我们详细介绍了mysql系统库中的时区信息记录表,本期我们将为大家带来系列第七篇<复制信息记录表|全方位认识 mysql ...

  9. mysql blob 内容查看_这些被你忽视的MySQL细节,可能会让你丢饭碗!

    我们在 MySQL 入门篇主要介绍了基本的 SQL 命令.数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我 ...

  10. mysql 密码hash算法_如何用hash创建一个mySQL用户(‘sha256’,$salt.$password)?

    我肯定错过了什么. 我想为select-only事务设置数据库用户帐户,但mysql不允许我在创建用户帐户时选择密码的哈希方法. 这失败了: GRANT SELECT ON myDB.* TO 'se ...

最新文章

  1. 问题解决:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  2. 第二十四章:页面导航(五)
  3. 新手第一课-什么是深度学习
  4. JavaWeb课程复习资料(六)——DAO与DAOImpl层封装
  5. POJ 3159 Candies(差分约束+SPAF)
  6. 深度揭秘Twitter的新一代流处理引擎Heron
  7. Lasso回归算法: 坐标轴下降法与最小角回归法小结
  8. Spring框架之演示JDBC的模板类
  9. 引用echar显示图形
  10. java 抓取搜狗微信_大虾们,求帮助……用httpclient 进行获取微信搜狗公众号文章问题...
  11. 医学与计算机领域融合的发展前景,浅谈对超声医学的发展现状与前景之探究
  12. android获取ssid,Android系绳 – 获取当前的SSID
  13. CAD绘制粗略的示坡线
  14. 猫是如何躲开影子的?
  15. 基于java+Mysql的志愿者管理系统代码分享
  16. AE教程丨星球文字环绕特效
  17. Mycat生产实践---数据迁移与扩容实践
  18. 业务规则引擎:Code Effects 5.X Crack-New
  19. 简易新闻系统,功能包含用户登录、新闻发布删除、评论管理等
  20. 51nod 2534 最小旅行路线------------------------------dp

热门文章

  1. Kettle--PanKitchen
  2. Oracle 的行列转换
  3. 利用 74390 设计一个模 6 计数器,要求从 000 计数至 101,利用D触发器使其暂态的高电平清零信号延长而稳定
  4. Java笔记(第七篇 JDBC操作数据库)
  5. 微信添加好友时的一个小细节
  6. 【C语言】卍字通晓→函数+递归
  7. 毕业设计之 - 题目:基于深度学习的手势识别实现
  8. 冷战时期的网课系统,居然催生出了世上第一块触屏!|科技拾遗
  9. nginx搭建文件上传下载服务器
  10. hdfs查看目录文件的大小 hdfs dfs -du -s -h /