news 2026/4/18 8:30:47

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

作者头像

张小明

前端开发工程师

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/4/18 5:42:08

Avue.js实战指南:数据驱动型企业级应用开发新范式

Avue.js实战指南:数据驱动型企业级应用开发新范式 【免费下载链接】avue 🔥Avue.js是基于现有的element-plus库进行的二次封装,简化一些繁琐的操作,核心理念为数据驱动视图,主要的组件库针对table表格和form表单场景,同…

作者头像 李华
网站建设 2026/4/18 3:18:33

openEuler系统下安装MongoDB的技术教程

你需要一份在openEuler系统下安装MongoDB的技术教程,我会按照环境准备→安装部署→配置启动→功能验证的流程,提供详细且可直接操作的步骤,同时覆盖开源版MongoDB(社区版)的核心配置要点。 一、环境说明 系统版本&…

作者头像 李华
网站建设 2026/4/18 5:09:24

Venture:构建复杂异步工作流的Laravel神器

Venture:构建复杂异步工作流的Laravel神器 【免费下载链接】venture Venture allows you to create and manage complex, async workflows in your Laravel apps. 项目地址: https://gitcode.com/gh_mirrors/ve/venture 在当今的Web开发中,处理复…

作者头像 李华
网站建设 2026/4/18 5:07:55

边缘智能的下一波浪潮:TinyML如何颠覆传统AI部署模式

边缘智能的下一波浪潮:TinyML如何颠覆传统AI部署模式 【免费下载链接】tinyml 项目地址: https://gitcode.com/gh_mirrors/ti/tinyml 在AI技术快速发展的今天,一个革命性的变革正在悄然发生——TinyML技术正将强大的机器学习能力带入微小的边缘设…

作者头像 李华
网站建设 2026/4/18 5:10:14

光伏混合储能系统碰上虚拟同步发电机(VSG),这个组合拳打出来到底什么效果?今天咱们用Simulink模型拆解这个混合系统的运作细节,手把手看看各模块怎么配合

光伏混合储能虚拟同步发电机VSG并网仿真模型 ①VSG控制 由有功频率环和无功调压环组成,其中有功频率环包括一次调频以及转子机械方程。 由有功环产生频率和相位,无功环产生电压幅值,然后组成三相参考电压。 并且加入虚拟阻抗环节。 ②光伏PV模…

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

COLMAP三维重建终极优化指南:5大矩阵运算技巧让计算速度翻倍

COLMAP三维重建终极优化指南:5大矩阵运算技巧让计算速度翻倍 【免费下载链接】colmap COLMAP - Structure-from-Motion and Multi-View Stereo 项目地址: https://gitcode.com/GitHub_Trending/co/colmap 你是否曾经在运行大规模三维重建项目时,看…

作者头像 李华