news 2026/5/1 4:44:10

7大领域,50道经典题目,助你彻底搞定MySQL面试!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
7大领域,50道经典题目,助你彻底搞定MySQL面试!

【大长文】7大领域,50道经典题目,助你彻底搞定MySQL面试!

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

首先,看看下面的MySQL知识树。从图中可以看出,MySQL可以从开发、优化、维护3方面来展开学习。其中,索引、锁、事务、优化等问题更是反复出现,是面试的重中之重。本篇文章就将聚焦于存储引擎、数据类型、索引、锁、事务、表结构、优化等常见的7大领域。

一、存储引擎相关

1.你知道哪些MySQL存储引擎?
2.常见的存储引擎都适用于哪些场景?

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

3.InnoDB和MyISAM的区别有哪些?
4、InnoDB和MyISAM,select count(*)哪个更快,为什么?

MyISAM更快。因为MyISAM内部维护了一个计数器,可以直接调取。

5、MyISAM Static和MyISAM Dynamic有什么区别?

二、数据类型相关

6. char和varchar的区别是什么?
7.varchar(10)和int(10)分别有什么含义?
8.MySQL的binlog有几种录入格式,它们之间有什么区别?

有三种格式:statement、row和mixed。

9.如何在Unix和MySQL时间戳之间进行转换?
10.怎样才能找出最后一次插入时分配了哪个自动增量?

LAST_INSERT_ID将返回由Auto_increment分配的最后一个值,并且不需要指定表名称。

11.列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?

它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。

12.MySQL中,如果一个表有一列定义为TIMESTAMP,则会发生什么?

每当行被更改时,时间戳字段将获取当前时间戳。

13. 如果要存储用户的密码散列,应该使用什么字段进行存储?

密码散列、用户身份证号等固定长度的字符串,应该使用char而不是varchar来存储,这样可以节省空间且提高检索效率。

三、索引相关

14. 什么是索引?

索引是一种数据结构,可以帮助我们快速地进行数据的查找。

15.索引有什么优缺点?

索引的优点有:

索引的缺点有:

16.索引的数据结构和什么有关?
17.MySQL主要的索引类型有哪些?
18. 在建立索引的时候,需要考虑哪些因素?
19. Hash索引和B+树索引有什么区别?

首先要知道Hash索引和B+树索引的底层实现原理:

可以看出他们有以下的不同:

因此,在大多数情况下,直接选择B+树索引可以获得稳定且较好的查询速度,而不需要使用hash索引。

20. 非聚簇索引一定会回表查询吗?

不一定。这涉及到查询语句所要求的字段是否全部命中了索引,如果全部命中了索引,那么就不必再进行回表查询。

举个简单的例子,假设我们在员工表的年龄上建立了索引,那么当进行select age from employee where age < 20的查询时,在索引的叶子节点上,已经包含了age信息,不会再次进行回表查询。

21. 什么是联合索引?为什么需要注意联合索引中的顺序?

MySQL可以使用多个字段同时建立一个索引,叫做联合索引。在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引。

具体原因为:

MySQL使用索引时需要索引有序,假设现在建立了"name,age,school"的联合索引,那么索引的排序为:先按照name排序,如果name相同,则按照age排序,如果age的值也相等,则按照school进行排序。

当进行查询时,此时索引仅仅按照name严格有序,因此必须首先使用name字段进行等值查询,之后对于匹配到的列而言,其按照age字段严格有序,此时可以使用age字段用做索引查找……因此在建立联合索引的时候应该注意索引列的顺序,一般情况下,将查询需求频繁或者字段选择性高的列放在前面。此外可以根据特例的查询或者表结构进行单独的调整。

22. 怎样知道语句运行很慢的原因?

MySQL提供了explain命令来查看语句的执行计划。

MySQL在执行某个语句之前,会将该语句过一遍查询优化器,之后会拿到对语句的分析,也就是执行计划,其中包含了许多信息。可以通过其中和索引有关的信息来分析是否命中了索引,例如possilbe_key、key、key_len等字段,分别说明了此语句可能会使用的索引,实际使用的索引以及使用的索引长度。

23. 为何会发生针对该列创建了索引但是在查询的时候并没有使用的问题?

在下面情况下,MySQL无法使用索引:

四、锁相关

24. 你对MySQL锁是怎么理解的?

当数据库有并发事务的时候,可能会产生数据的不一致,这时候需要一些机制来保证访问的次序,锁机制就是这样的一个机制。

就像酒店的房间,如果大家随意进出,就会出现多人抢夺同一个房间的情况,而在房间上装上锁,申请到钥匙的人才可以入住并且将房间锁起来,其他人只有等他使用完毕才可以再次使用。

25.加锁有什么好处?

数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。

26.Mysql中有哪几种锁?
27.什么是死锁?锁等待?通过数据库哪些表可以监控?
28.MySQL中InnoDB引擎的行锁是如何实现的?
29.你知道哪些优化锁的方法?

五、事务相关

30. 什么是事务?

事务是一系列的操作,他们要符合ACID特性。

最常见的理解就是:事务中的操作要么全部成功,要么全部失败。

31. ACID是什么?

ACID,是数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

32.事务是如何通过日志来实现的?
33. 同时有多个事务在进行会怎么样?

多事务的并发进行一般会造成以下几个问题:

34. MySQL的事务隔离级别有哪些?
35. InnoDB使用的是哪种隔离级别?

InnoDB默认使用的是可重复读隔离级别。

36.REPEATABLE READ隔离级别下 MVCC 如何工作?
37.InnoDB 如何开启手动提交事务?

InnoDB 默认是自动提交事务的,每一次 SQL 操作(非 select 操作)都会自动提交一个事务,如果要手动开启事务需要设置set autocommit=0禁止自动提交事务,相当于开启手动提交事务。

38.在 InnoDB 中设置了 autocommit=0,添加一条信息之后没有手动执行提交操作,请问这条信息可以被查到吗?

autocommit=0 表示禁止自动事务提交,在添加操作之后没有进行手动提交,默认情况下其他连接客户端是查询不到此条新增数据的。

六、表结构设计相关

39. 为什么要尽量设定一个主键?

主键是数据库确保数据行在整张表唯一性的保障,即使业务上本张表没有主键,也建议添加一个自增长的ID列作为主键。设定了主键之后,在后续的删改查的时候会更加快速以及确保操作数据范围安全。

40. 主键使用自增ID还是UUID?

推荐使用自增ID,不要使用UUID。

因为在InnoDB存储引擎中,主键索引是作为聚簇索引存在的。也就是说,主键索引的B+树叶子节点上存储了主键索引以及全部的数据(按照顺序)。如果主键索引是自增ID,那么只需要不断向后排列即可;如果是UUID,由于到来的ID与原来的大小不确定,会造成非常多的数据插入,数据移动,然后导致产生很多的内存碎片,进而造成插入性能的下降。

总之,在数据量大一些的情况下,用自增ID性能会更好。

41. 字段为什么要求定义为not null?

MySQL官网这样介绍:

NULL columns require additional space in the rowto record whether their values are NULL. For MyISAM tables, each NULL columntakes one bit extra, rounded up to the nearest byte.

也就是:null值会占用更多的字节,且会在程序中造成很多与预期不符的情况。

七、优化相关

42.explain出来的各种item的意义是什么?
43.profile的意义以及使用场景有哪些?

Profile 用来分析 sql 性能的消耗分布情况。当用 explain 无法解决慢 SQL 的时候,需要用profile 来对 sql 进行更细致的分析,找出 sql 所花的时间大部分消耗在哪个部分,确认 sql的性能瓶颈。

44. 统计过慢查询吗?对慢查询都怎么优化过?

慢查询的优化首先要搞明白慢的原因是什么。是查询条件没有命中索引?是load了不需要的数据列?还是数据量太大?

所以优化也是针对这三个方向来的:

45.说一说你能想到的sql语句优化,至少五种
46.说一说你能想到的表结构优化,至少五种

八、其他

47.数据三大范式是什么?
48.超大分页如何处理?

超大的分页一般从两个方向上来解决:

解决超大分页,其实主要是靠缓存,可预测性的提前查到内容,缓存至redis等k-V数据库中,直接返回即可。

49.MySQL数据库cpu飙升到500%的话,该如何处理?
50.什么是存储过程?

学习资源

如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你

知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。

1、知识库价值

深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。

广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。

实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。

2、 部分核心内容展示

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。

1、网络安全意识

2、Linux操作系统

3、WEB架构基础与HTTP协议

4、Web渗透测试

5、渗透测试案例分享

6、渗透测试实战技巧

7、攻防对战实战

8、CTF之MISC实战讲解

3、适合学习的人群

一、基础适配人群

  1. 零基础转型者‌:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌;
  2. 开发/运维人员‌:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展‌或者转行就业;
  3. 应届毕业生‌:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期‌;

二、能力提升适配

1、‌技术爱好者‌:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌;

2、安全从业者‌:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌;

3、‌合规需求者‌:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 4:42:30

【数学建模】2024年深圳杯数学建模竞赛全国二等奖之基于MATLAB的无人机协同避障路径规划解决方案(C题)附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…

作者头像 李华
网站建设 2026/5/1 4:42:29

【开题答辩全过程】以 基于Java的晋中信息学院学生健康管理系统为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

作者头像 李华
网站建设 2026/4/25 10:16:10

goshop电商项目02

电商轮播图 RestController RequestMapping("/index") public class CarouselController {Autowiredprivate CarouselService carouselService;/*** 获取轮播图列表** return*/GetMapping("/carousel")public JsonResult carousel() {return JsonResult.ok…

作者头像 李华
网站建设 2026/4/18 12:48:17

基于大数据的电商销售预测分析系统 开题报告

目录 研究背景与意义关键技术概述系统架构设计预期成果创新点 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 研究背景与意义 随着电子商务规模持续扩大&#xff0c;海量交易数据为销售预测提供了基础。…

作者头像 李华