news 2026/7/19 18:17:17

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

作者头像

张小明

前端开发工程师

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/7/19 2:36:43

Steam游戏挂机神器:3分钟学会自动刷时长和交易卡

还在为Steam游戏时间不足而苦恼?想要轻松收集交易卡却不想整天开着游戏?HourBoostr和SingleBoostr这两款开源工具将彻底改变你的游戏挂机体验,让你在不实际运行游戏的情况下安全增加游戏时间,大大提升效率。 【免费下载链接】Hour…

作者头像 李华
网站建设 2026/7/18 1:46:46

F5 Big-IP by SNMP.硬件负载均衡

F5 Big-IP by SNMP 指的是通过 SNMP(简单网络管理协议) 对F5 Big-IP负载均衡器进行监控、配置和故障诊断的管理方式。SNMP是F5设备标准化的远程管理协议,支持与Zabbix、Nagios、SolarWinds等监控系统集成,实现对负载均衡器的性能监…

作者头像 李华
网站建设 2026/7/19 16:44:25

EmotiVoice WebSocket接口设计与调用示例

EmotiVoice WebSocket接口设计与调用实践 在虚拟偶像的直播中,观众听到的不仅是标准语音合成的声音,而是一个带着喜悦或调侃语气、音色宛若真人主播的“数字人”在实时互动;在有声书中,朗读者的声音不再是千篇一律的机械腔&#x…

作者头像 李华
网站建设 2026/7/19 11:09:58

基于51单片机的颜色识别报站系统设计

基于51单片机的颜色识别报站系统设计 第一章 绪论 在公共交通、景区观光、园区通勤等场景中,传统报站系统多依赖人工触发或GPS定位,存在人工成本高、定位误差大、遮挡环境下失效等问题,难以满足精准化、自动化报站需求。颜色识别技术凭借响应…

作者头像 李华
网站建设 2026/7/18 20:16:23

3个关键策略解决Cocos事件响应混乱问题

3个关键策略解决Cocos事件响应混乱问题 【免费下载链接】cocos-engine Cocos simplifies game creation and distribution with Cocos Creator, a free, open-source, cross-platform game engine. Empowering millions of developers to create high-performance, engaging 2D…

作者头像 李华