- 博客(12)
- 资源 (4)
- 收藏
- 关注
原创 【每日一道面试题】MySQL 中 NULL 和 NOT NULL 一定不走索引么
MySQL字段NULL值对索引使用的影响:当字段定义为NOT NULL时,IS NULL查询会被优化器识别为不可能条件,而IS NOT NULL会走全表扫描;允许NULL值时,两者都可能使用索引。测试表明,NULL值分布占比显著影响优化器决策:低占比的NULL/非NULL条件更可能走索引,高占比则倾向全表扫描。此外,覆盖索引能优化IS NOT NULL查询。建议根据业务需求合理设计字段约束,避免过度使用NULL值以提升查询性能。
2025-07-27 22:05:38
717
原创 【每日一道面试题】聚簇索引、覆盖索引以及索引下推到底是什么
本篇介绍聚簇索引、二级索引、覆盖索引以及索引下推相关概念。索引的基本概念对于学习MySQL至关重要。聚簇索引:叶子节点直接存储实际数据,包含所有完整的用户数据。二级索引:叶子节点则存储主键值,而非实际数据。覆盖索引:能够在二级索引上直接查询到所需要的数据。索引下推: 直接在二级索引上做条件判断。
2025-07-25 22:44:08
1781
原创 【每日一道面试题】MySQL索引失效的场景
MySQL索引失效的常见场景及优化建议:全文分析了6种导致索引失效的情况,包括模糊匹配、函数计算、表达式计算、隐式类型转换、联合索引非最左匹配以及WHERE子句中的OR条件。针对每种情况详细解释了失效原因,并提供了相应的优化方案,如使用函数索引、调整查询条件、确保类型匹配等。特别强调了联合索引的最左匹配原则和MySQL 5.6引入的索引下推功能。通过合理设计索引和优化查询条件,可以有效避免全表扫描,提升数据库查询性能。
2025-07-23 21:27:49
582
原创 【每日一道面试题】MySQL 为什么选择B+树作为底层的数据结构
本文探讨了MySQL为何选择B+树作为索引结构而非其他数据结构。首先分析了二叉搜索树和红黑树的不足:二叉搜索树在顺序插入时会退化为链表,红黑树虽能自平衡但高度仍较高且节点存储数据有限。然后对比B树和B+树的差异,指出B+树在非叶子节点仅存储键值、叶子节点通过链表连接等特性,使其更适合范围查询和顺序访问。最后通过计算节点存储容量,说明B+树在三层结构下即可支持千万级数据存储,具有更高的空间利用率和查询效率。
2025-07-21 22:37:22
656
原创 【每日一道面试题】谈谈对索引的理解?哪些字段适合加索引,哪些不适合
MySQL索引优化指南 本文介绍了MySQL索引的核心知识点,包括常见索引类型(B树、哈希、全文索引等)、适合加索引的字段(高基数、常用查询条件、外键等)和不适合加索引的字段(低基数、频繁更新、大文本等)。文章还提供了索引设计的最佳实践,如合理设计复合索引、避免过多索引、使用覆盖索引等。最后强调索引设计应平衡查询性能和维护成本,根据业务需求选择性添加索引,并定期优化。合理使用索引能显著提升查询效率,但滥用会降低写入性能。
2025-07-20 07:57:28
1528
原创 【每日一道面试题】为什么不推荐使用外键
摘要: 外键虽能确保数据完整性,但在实际开发中常被弃用,主要原因包括: 性能影响:增加插入/删除操作的检查开销,降低批量处理效率; 灵活性不足:阻碍数据迁移与表结构重构; 分布式系统限制:跨服务或分库场景下难以维护一致性; 管理复杂度:加剧事务锁竞争,需应用层补充校验逻辑。 尽管外键适用于强一致性需求或简单模型,团队需权衡性能、架构灵活性与开发成本,通过业务逻辑或替代方案保障数据正确性。
2025-07-20 06:44:26
251
原创 【每日一道面试题】如何实现多次请求幂等
本文介绍了在用户多次点击提现按钮时保证幂等性的综合解决方案。核心流程包括:1)前端预申请Token防重复提交;2)数据库唯一索引拦截重复请求;3)乐观锁确保余额扣减安全;4)分布式锁防止并发操作;5)事务保证数据一致性。同时还提出了结果缓存、有效期设置等优化措施,并强调了对账机制的必要性。该方案通过多层次防护,有效解决了重复提现问题,在保证资金安全的同时提升系统健壮性。
2025-07-19 16:12:01
428
原创 【每日一道面试题】加密后的数据该如何支持模糊查询
MySQL加密数据模糊查询的三种解决方案:1)内存解密:简单但性能差,易OOM;2)加密函数:低成本实现但无法利用索引;3)分片加密(推荐):将数据分段加密存储,支持模糊查询但需额外存储空间。阿里文档建议采用类似分片加密方案,根据数据安全性和查询性能需求选择合适方案。
2025-07-18 22:48:07
802
原创 【每日一道面试题】MySQL的深度分页如何优化
MySQL深度分页性能下降的主要原因是需要扫描大量数据。优化方法包括:1)利用主键/唯一索引定位记录;2)子查询先获取ID再关联;3)使用覆盖索引减少回表;4)应用缓存分页结果;5)根据业务调整分页逻辑;6)限制最大翻页数。建议结合EXPLAIN分析选择适合的优化策略。这些方法能有效提升深度分页查询效率。
2025-07-16 22:52:07
346
原创 图解Spark源码(一)--- Spark 通信架构
Spark1.6 之前使用的是 Akka 作为内部通讯组件,Spark1.6 之后将 Akka 换成了 Netty。但是它借鉴了 Akka 中的设计,即 Actor 模型。Spark 是一个分布式计算系统,因此节点间存在很多通信,那么Spark 就会借助这些通讯框架进行RPC 通信。driver 和 master 之间的通信,比如 driver 回向 master 申请计算资源。
2022-10-23 21:48:36
2877
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅