开发人员必备的9大MySQL索引和查询优化一般来说,程序员的面试内容分为两部分,一部分与编程相关,另一部分则与数据库相关。而作为数据库中的主流,MySQL更是涉及面试中的诸多高频考点。对于后端人员来说,不需要像专业的DBA那样精通MySQL,但也需要掌握相关的基本内容。我在这总结了MySQL面试中常见7大问题的50道经典面试题,以期帮助大家顺利通过面试。

MySQL面试专题—7大问题

一、存储引擎相关

  1. 你知道哪些MySQL存储引擎?
  2. 常见的存储引擎都适用于哪些场景?
  3. InnoDB和MyISAM的区别有哪些?
  4. InnoDB和MyISAM,select count(*)哪个更快,为什么?
  5. MyISAM Static和MyISAM Dynamic有什么区别?

二、数据类型相关

  1. char和varchar的区别是什么?
  2. varchar(10)和int(10)分别有什么含义?
  3. MySQL的binlog有几种录入格式,它们之间有什么区别?
  4. 如何在Unix和MySQL时间戳之间进行转换?
    怎样才能找出最后一次插入时分配了哪个自动增量?
  5. 列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?
  6. MySQL中,如果一个表有一列定义为TIMESTAMP,则会发生什么?
  7. 如果要存储用户的密码散列,应该使用什么字段进行存储?

三、索引相关

  1. 什么是索引?
  2. 索引有什么优缺点?
  3. 索引的数据结构和什么有关?
  4. MySQL主要的索引类型有哪些?
  5. 在建立索引的时候,需要考虑哪些因素?
  6. Hash索引和B+树索引有什么区别?
  7. 非聚簇索引一定会回表查询吗?
  8. 什么是联合索引?为什么需要注意联合索引中的顺序?
  9. 怎样知道语句运行很慢的原因?
  10. 为何会发生针对该列创建了索引但是在查询的时候并没有使用的问题?

四、锁相关

  1. 你对MySQL锁是怎么理解的?
  2. 加锁有什么好处?
  3. Mysql中有哪几种锁?
  4. 什么是死锁?锁等待?通过数据库哪些表可以监控?
  5. 28.MySQL中InnoDB引擎的行锁是如何实现的?
  6. 29.你知道哪些优化锁的方法?

五、事务相关

  1. 什么是事务?
  2. ACID是什么?
  3. 事务是如何通过日志来实现的?
  4. 同时有多个事务在进行会怎么样?
  5. MySQL的事务隔离级别有哪些?
  6. InnoDB使用的是哪种隔离级别?
  7. REPEATABLE READ隔离级别下 MVCC 如何工作?
  8. InnoDB 如何开启手动提交事务?
  9. 在 InnoDB 中设置了 autocommit=0,添加一条信息之后没有手动执行提交操作,请问这条信息可以被查到吗?

六、表结构设计相关

  1. 为什么要尽量设定一个主键?
  2. 主键使用自增ID还是UUID?
  3. 字段为什么要求定义为not null?

七、优化相关

  1. explain出来的各种item的意义是什么?
  2. profile的意义以及使用场景有哪些?
  3. 统计过慢查询吗?对慢查询都怎么优化过?
  4. 说一说你能想到的sql语句优化,至少五种
  5. 说一说你能想到的表结构优化,至少五种

八、其他

  1. 数据三大范式是什么?
  2. 超大分页如何处理?
  3. MySQL数据库cpu飙升到500%的话,该如何处理?
  4. 什么是存储过程?

面试题答案

1.你知道哪些MySQL存储引擎?

2.常见的存储引擎都适用于哪些场景?

使用哪一种引擎需要灵活选择,合适的存储引擎,能够提高整个数据库的性能。不同的存储引擎都有各自的特点,以适应不同的需求,如下表所示:

 由于篇幅限制,太长看下去会很乏味,也会影响阅读体验,下面展现将以图片形式展示。

这份文档共分3个部分

  1. 基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份恢复知识。
  2. 性能优化篇从影响 MySQL 数据库应用系统性能的因素开始,针对性地对各个影响因素进行调优分析
  3. 架构设计篇则主要以设计一个高可用可扩展的分布式企业级数据库集群环境为目标,分析介绍了通过MySQL 实现这一目标的多种架构方式。

获取方式:一键三连后,“加我VX小助理”来免费获取到!