news 2026/7/7 17:59:22

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

作者头像

张小明

前端开发工程师

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/7 7:26:09

Deepseek 持续迭代的模型

Deepseek 能在推理、编码、多语言处理等场景表现突出,核心源于其TransformerMoE 混合架构的创新设计,以及持续迭代的模型优化策略。​ 基础架构:TransformerMoE 的协同优势​ Transformer 架构:作为自然语言处理的基础框架&#x…

作者头像 李华
网站建设 2026/7/7 11:35:14

基于51单片机的智能锁设计与实现

基于51单片机的智能锁设计与实现 第一章 绪论 在智能家居与安防技术融合发展的背景下,传统机械锁存在钥匙易丢失、防盗性能弱、无法远程监控等弊端,难以满足现代家庭与办公场景的安全需求。51单片机凭借编程简洁、接口丰富、性价比突出的优势&#xff0c…

作者头像 李华
网站建设 2026/7/7 19:32:24

基于51单片机指纹密码锁系统

基于51单片机的指纹密码锁系统设计 第一章 绪论 在智能家居与安防需求升级的背景下,单一密码锁存在密码易泄露、遗忘的问题,纯指纹锁则可能因指纹磨损、潮湿导致识别失灵,传统机械锁的防盗短板更显突出。51单片机凭借编程简洁、接口兼容性强、…

作者头像 李华
网站建设 2026/7/6 20:33:45

西门子1500PLC在物流分拣线中的实践应用

西门子1500PLC某大型物流中心分拣线程序案例 由18个远程IO模块和39个ST40CPU组态,多种线体分拣程序,使用大华扫码枪扫码上传,程序采用SCL进行编程,程序注释齐全,逻辑清晰,可参考性较好。 V15版本打开 包含…

作者头像 李华
网站建设 2026/7/7 5:09:39

从LLM到Agent:AI系统架构的四个核心阶段,建议收藏!

文章通过简历筛选案例,系统介绍了AI系统架构的四个发展阶段:纯LLM架构、RAG系统、AI工作流和AI Agent。强调应根据实际需求选择合适架构,避免盲目追求先进技术。简单任务只需基础提示词工程,复杂业务流程才需要Agent的自主规划能力…

作者头像 李华
网站建设 2026/7/7 13:17:46

无广告视频新时代:Invidious扩展生态全攻略

无广告视频新时代:Invidious扩展生态全攻略 【免费下载链接】invidious Invidious is an alternative front-end to YouTube 项目地址: https://gitcode.com/GitHub_Trending/in/invidious 厌倦了YouTube无尽的广告轰炸和隐私追踪?Invidious作为开…

作者头像 李华