news 2026/6/4 20:21:27

面试数据库八股文十问十答第五期

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试数据库八股文十问十答第五期

面试数据库八股文十问十答第五期

作者:程序员小白条,个人博客

1)介绍一下 MySQL8 的新特性

  • Window Functions:提供了对查询结果进行窗口化处理的功能,例如使用ROW_NUMBER()进行分页。
  • Common Table Expressions (CTE):支持 WITH 语法,允许在查询中使用带有别名的临时结果集。
  • JSON enhancements:支持 JSON 聚合函数、更多的 JSON 操作符和 JSON 路径表达式。
  • Spatial Reference System:引入了空间参考系统,以支持地理空间数据类型。
  • Invisible Indexes:允许创建不会影响查询计划的不可见索引,有助于在不影响性能的情况下测试新的索引。
  • Resource Groups:允许将用户分组,并为每个组分配特定的资源。
  • MySQL Document Store:将 MySQL 与 NoSQL 功能相结合,支持以 JSON 格式存储和查询文档数据。

2)MySQL 的索引有几种类型?

  • B-Tree 索引:默认的索引类型,适用于等值查询和范围查询。
  • 哈希索引:适用于精确查找,不支持范围查询,通常用于内存表。
  • 全文索引:用于全文搜索,例如FULLTEXT索引。
  • 空间索引:用于处理空间数据,例如地理空间数据类型的SPATIAL索引。

3)MySQL 中的默认索引是什么?

在 MySQL 中,主键列(Primary Key)和唯一约束列(Unique Key)会默认创建 B-Tree 索引,以保证数据的唯一性和快速检索。

4)MySQL 中有哪些锁?

  • 共享锁(Shared Lock):多个事务可以同时持有共享锁,用于读操作,不阻塞其他事务的共享锁。
  • 排他锁(Exclusive Lock):事务独占资源的锁,用于写操作,会阻塞其他事务的任何锁。

5)MySQL 中什么时候使用表锁,什么时候使用行锁?

  • 表锁(Table Lock):适用于大批量的数据操作,如表结构变更,全表查询等。表锁对并发性影响较大,因为它会锁住整个表,其他事务无法同时操作。
  • 行锁(Row Lock):适用于只涉及少量数据的操作,如更新或删除单行记录。行锁对并发性的影响较小,因为只锁住需要操作的行,其他事务仍可以同时操作其他行。

选择使用表锁还是行锁取决于具体的业务需求和并发访问模式。表锁可能导致性能瓶颈,因此在高并发环境下更倾向于使用行锁。

6)介绍MySQL中锁、索引、事务之间的联系

  • 锁:MySQL中的锁机制用于控制对数据的访问,以确保并发事务之间的数据一致性。锁可以是共享锁或排他锁,用于控制读写操作的并发性。
  • 索引:索引是一种数据结构,用于加速对数据库表中数据的检索。通过使用索引,可以降低查询的时间复杂度,提高数据库的性能。
  • 事务:事务是一系列数据库操作的单元,要么全部执行成功,要么全部回滚。事务的隔离性和一致性要求使用锁来确保事务的执行不受并发操作的影响。

在并发操作中,锁用于控制事务对数据的访问,而索引用于加速对数据的检索。事务通过锁来保证数据的一致性和隔离性,而索引可以减少锁的竞争,提高并发性能。

7)MySQL的架构讲一下?

MySQL的架构主要包括以下组件:

  • 连接池和线程处理:处理客户端连接请求,并使用线程池进行管理。
  • 查询解析和优化器:解析SQL查询语句,生成查询计划,进行优化以提高执行效率。
  • 存储引擎:负责实际的数据存储和检索工作。MySQL支持多种存储引擎,如InnoDB、MyISAM等。
  • 缓存和缓存管理:使用缓存来提高数据的访问速度,通过缓存管理来优化内存的使用。
  • 日志记录:记录数据库的操作日志,包括事务日志和错误日志,以确保数据的一致性和可靠性。
  • 连接管理和安全性:管理用户连接,并提供安全机制,包括用户认证和权限管理。

8)MySQL怎么去实现分布式锁呢?

  • 基于表的实现:创建一个专门用于存储锁信息的表,通过插入、更新、删除记录来控制分布式锁。
  • 基于缓存的实现:使用分布式缓存工具如Redis,利用其原子性操作来实现分布式锁。
  • 基于ZooKeeper等协调服务:利用分布式协调服务实现分布式锁,通过在协调服务中创建临时节点来控制锁的释放与获取。

9)介绍一下b+树的数据结构

  • B+树是一种自平衡树,用于索引结构。它与B树相似,但在叶子节点上存储了所有的关键字,且叶子节点之间使用链表相连。
  • 所有关键字按顺序存储在叶子节点上,内部节点只存储索引,而不存储实际的关键字数据。
  • B+树的特点包括有序性、高度平衡、适合范围查询等。在数据库中常被用作索引结构。

10)(a,b,c)联合索引 where a = ‘xxx’ b is null c = 'xxx’怎么走索引

  • 对于这个联合索引 (a, b, c),在查询条件中使用了a和c,而b为NULL,MySQL可以利用这个联合索引进行范围查询。
  • 索引的有序性可以让数据库快速定位到 a=‘xxx’ 的记录,然后在该记录的基础上进行 c=‘xxx’ 的过滤,由于b是NULL,不会影响索引的使用。
  • 总体来说,这个查询条件可以有效地利用联合索引,提高查询性能。但要注意,实际的性能还受到表的大小、数据分布等因素的影响。

项目

项目适用人群:做课设、毕设的小伙伴、只学习了后端(或者前端),但想要自己做项目写在简历上,这三个项目可以作为拓展点。

前后端项目 Gitee & Github 累计 3000+ Star,10W+浏览量!⭐点赞⭐收藏⭐不迷路!⭐

智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend

智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend

GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem

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

供需缺口+AI算力需求+降息憧憬,白银突破66美元后走势几何?

“白银溢价”正在成为全球金融市场的热词。随着银价强势突破66美元,市场原本的估值模型似乎已失效。这背后是“供需缺口”、“AI算力刚需”与“央行降息预期”形成的三重共振。本文将从产业链的微观视角出发,结合宏观资金流向,深入探讨在66美…

作者头像 李华
网站建设 2026/6/2 18:46:42

SLIM容器优化工具终极指南:从臃肿镜像到精悍部署

你是否曾为Kubernetes集群中臃肿的容器镜像烦恼?构建速度慢、存储成本高、部署延迟长——这些问题不仅影响开发效率,更直接制约着系统的可扩展性。作为CNCF沙箱项目,SLIM(SlimToolkit)通过智能分析技术,可将…

作者头像 李华
网站建设 2026/6/3 20:41:19

基于51单片机火灾报警器设计

基于51单片机的火灾报警器设计 第一章 绪论 火灾作为危害公共安全的主要灾害之一,具有蔓延速度快、破坏性强、救援难度大等特点,传统火灾报警设备多依赖单一传感器检测,存在响应滞后、误报率高、功能单一等问题,难以满足家庭、小…

作者头像 李华
网站建设 2026/6/2 14:06:39

基于51单片机技术的智能柜拒收物系统

基于51单片机技术的智能柜拒收物系统设计 第一章 绪论 随着智能柜在社区、写字楼、快递驿站等场景的广泛应用,传统智能柜仅具备储物与解锁功能,缺乏对违禁品、超规格物品的识别能力,需依赖人工核查,存在效率低下、安全隐患等问题…

作者头像 李华
网站建设 2026/6/1 12:46:24

Harmony学习之自定义组件开发

Harmony学习之自定义组件开发 一、场景引入 小明在开发电商应用时发现,商品卡片、用户头像、按钮等UI元素在多个页面重复出现,每次都要复制粘贴相同的代码。这不仅导致代码冗余,还增加了维护成本——修改一个样式需要在多个地方同步更新。更…

作者头像 李华
网站建设 2026/6/1 10:11:39

Harmony学习之动画与交互动效

Harmony学习之动画与交互动效 一、场景引入 小明在开发电商应用时发现,页面切换、按钮点击、列表加载等操作缺乏过渡效果,用户体验显得生硬。他观察到竞品应用在细节处都使用了流畅的动画效果:商品卡片加载时的渐入效果、按钮点击时的缩放反馈…

作者头像 李华