随笔分类 -  面试题

常见面试题,当备忘录查看
摘要:MySQL 的索引下推是什么? 索引下推(Index Condition Pushdown, ICP)是 MySQL 优化器在 InnoDB 存储引擎中引入的一种查询优化技术,从 MySQL 5.6 开始支持。它的目的是通过将部分查询条件“下推”到存储引擎层,在扫描索引时就进行过滤,减少数据的回表次 阅读全文
posted @ 2024-12-14 22:39 Eiffelzero 阅读(233) 评论(0) 推荐(0) 编辑
摘要:MySQL 的覆盖索引是什么? 覆盖索引(Covering Index)是指索引本身包含了查询所需的所有字段数据,从而无需再回表查询的数据访问方式。这种优化能够显著提升查询性能。 1. 覆盖索引的特点 查询所涉及的字段都在索引中能够找到。 不需要访问表的聚簇索引或主键索引即可满足查询。 在一定程度上 阅读全文
posted @ 2024-12-14 22:33 Eiffelzero 阅读(167) 评论(0) 推荐(0) 编辑
摘要:MySQL 索引的最左前缀匹配原则 最左前缀匹配原则是 MySQL 使用联合索引时的一个重要优化规则。它指的是在查询条件中,只有符合索引最左侧字段开始的连续前缀部分时,索引才能被有效利用。 1. 最左前缀匹配的含义 联合索引:一个索引包含多个列,如 CREATE INDEX idx_col ON t 阅读全文
posted @ 2024-12-14 22:31 Eiffelzero 阅读(440) 评论(0) 推荐(0) 编辑
摘要:MySQL 中的回表 回表是 MySQL 查询优化中的一个概念,指的是在使用非聚簇索引查询时,无法直接从索引中获取所需的所有数据,需要通过非聚簇索引查找到主键值,然后再去聚簇索引中根据主键值获取完整数据行的过程。 1. 回表的触发条件 使用了非聚簇索引(也称二级索引、辅助索引)。 查询的列中有部分字 阅读全文
posted @ 2024-12-14 22:27 Eiffelzero 阅读(288) 评论(0) 推荐(0) 编辑
摘要:MySQL InnoDB 引擎中的聚簇索引和非聚簇索引的区别 在 MySQL 的 InnoDB 存储引擎中,聚簇索引和非聚簇索引是两种常见的索引类型,它们在数据存储结构和使用场景上有显著区别。 1. 聚簇索引(Clustered Index) 特点 数据和索引存储在一起: InnoDB 表的主键索引 阅读全文
posted @ 2024-12-14 22:20 Eiffelzero 阅读(155) 评论(0) 推荐(0) 编辑
摘要:MySQL 的索引类型 MySQL 提供多种索引类型,用于优化数据查询性能。每种索引类型在存储结构、适用场景和性能特性方面各不相同。 1. 常见的索引类型 (1)B+树索引 结构:基于 B+ 树实现,是 MySQL 中最常见的索引类型。 特点: 索引节点按照键值从小到大顺序排列。 叶子节点之间通过指 阅读全文
posted @ 2024-12-14 22:18 Eiffelzero 阅读(236) 评论(0) 推荐(0) 编辑
摘要:MySQL 的存储引擎及其区别 MySQL 提供多种存储引擎,不同存储引擎在数据存储方式、索引支持、事务处理等方面各具特点。以下列出常用的存储引擎及其主要区别。 1. 常见存储引擎 (1)InnoDB 特点: 默认存储引擎,支持事务(ACID)。 使用 聚簇索引,主键数据和索引存储在一起。 支持外键 阅读全文
posted @ 2024-12-14 22:16 Eiffelzero 阅读(157) 评论(0) 推荐(0) 编辑
摘要:一条 SQL 语句在 MySQL 中的执行过程 当一条 SQL 语句被提交到 MySQL 时,它会经历多个步骤,包括解析、优化、执行等。以下以 SELECT 语句为例,详细描述整个执行流程。 1. 客户端与服务器连接 客户端通过 TCP/IP、Unix socket 等协议与 MySQL 服务器建立 阅读全文
posted @ 2024-12-13 22:11 Eiffelzero 阅读(40) 评论(0) 推荐(0) 编辑
摘要:MySQL 的 Change Buffer 1. 什么是 Change Buffer? Change Buffer 是 MySQL InnoDB 存储引擎中的一个优化机制,用于减少磁盘 I/O 操作。它是一个专门用来缓存 非唯一二级索引变更操作 的内存区域,位于 InnoDB 的 Buffer Po 阅读全文
posted @ 2024-12-13 22:04 Eiffelzero 阅读(122) 评论(0) 推荐(0) 编辑
摘要:MySQL 中的数据排序实现 在 MySQL 中,数据排序是通过 ORDER BY 子句实现的,主要涉及 文件排序 和 索引排序 两种方式。 1. 排序的基本原理 MySQL 的排序实现分为以下两种情况: 文件排序(File Sorting):当排序无法利用索引优化时,MySQL 会通过排序算法和临 阅读全文
posted @ 2024-12-13 21:59 Eiffelzero 阅读(65) 评论(0) 推荐(0) 编辑
摘要:Java 的执行流程 Java 的执行流程包括多个阶段,从源码编写到最终程序的执行,涉及到编译、类加载、字节码执行、垃圾回收等多个环节。下面将详细介绍 Java 程序的执行流程。 1. 编写源代码 开发者首先在 IDE 或文本编辑器中编写 Java 源代码文件(以 .java 为扩展名)。源代码文件 阅读全文
posted @ 2024-12-11 20:00 Eiffelzero 阅读(39) 评论(0) 推荐(0) 编辑
摘要:Java 中的对象在虚拟机里的存储 在 Java 中,对象在虚拟机中的存储方式取决于 JVM 内存模型,主要存储在 堆(Heap) 中。对象的内存布局和管理方式会影响对象的创建、访问和销毁。下面详细解释对象在 JVM 中的存储结构。 1. 对象在堆中的存储 Java 中的对象通常存储在 堆内存 中。 阅读全文
posted @ 2024-12-11 19:54 Eiffelzero 阅读(29) 评论(0) 推荐(0) 编辑
摘要:如何在 Java 中进行内存泄漏分析? 内存泄漏是指程序中无法访问的对象仍然被占用内存,导致内存无法回收,最终导致内存不足、程序崩溃等问题。Java 中的内存泄漏通常与垃圾回收机制的工作方式相关,虽然 JVM 会自动管理内存,但是如果程序设计不当,仍然可能发生内存泄漏。 以下是一些常用的 Java 阅读全文
posted @ 2024-12-11 19:52 Eiffelzero 阅读(434) 评论(0) 推荐(0) 编辑
摘要:常用的 JVM 性能分析工具 JVM 性能分析工具主要用于监控、调试和优化 Java 程序的性能,尤其是在垃圾回收、内存泄漏、线程调度等方面。以下是一些常用的 JVM 性能分析工具: 1. jvisualvm jvisualvm 是一个基于 GUI 的 Java 性能分析工具,它可以帮助开发者进行实 阅读全文
posted @ 2024-12-11 19:49 Eiffelzero 阅读(237) 评论(0) 推荐(0) 编辑
摘要:常用的 JVM 配置参数 JVM 配置参数可以用来控制 Java 程序的内存分配、垃圾回收、性能优化等。以下是一些常用的 JVM 配置参数: 1. 堆内存相关参数 -Xms:设置 JVM 初始堆内存大小。例如:-Xms512m 设置初始堆内存为 512MB。 -Xmx:设置 JVM 最大堆内存大小。 阅读全文
posted @ 2024-12-11 19:47 Eiffelzero 阅读(170) 评论(0) 推荐(0) 编辑
摘要:如何对 Java 的垃圾回收进行调优? Java 垃圾回收的调优涉及多个方面,从选择合适的垃圾回收器到调整堆内存的大小、配置 GC 参数等,下面是一些常见的调优方法: 1. 选择合适的垃圾回收器 不同的垃圾回收器适合不同类型的应用,因此选择合适的垃圾回收器是调优的第一步: Serial GC:适合单 阅读全文
posted @ 2024-12-11 19:29 Eiffelzero 阅读(73) 评论(0) 推荐(0) 编辑
摘要:JVM 垃圾回收调优的主要目标 JVM 垃圾回收调优的目标是为了提升应用的性能,优化垃圾回收过程中的停顿时间和吞吐量。调优的核心目标通常包括以下几点: 1. 减少垃圾回收的停顿时间 停顿时间(Stop-the-World,STW)指的是垃圾回收过程中,所有应用线程必须停止执行的时间。长时间的停顿可能 阅读全文
posted @ 2024-12-11 19:27 Eiffelzero 阅读(25) 评论(0) 推荐(0) 编辑
摘要:Java 的 ZGC(Z Garbage Collector) ZGC(Z Garbage Collector) 是 Java 11 引入的一种低延迟垃圾回收器,旨在减少垃圾回收时的停顿时间,并能够在大规模堆内存的环境下提供可预测的低停顿时间。ZGC 是一个并发、并行的垃圾回收器,专为大内存(例如多 阅读全文
posted @ 2024-12-11 19:21 Eiffelzero 阅读(212) 评论(0) 推荐(0) 编辑
摘要:Java 的 CMS 垃圾回收流程 CMS(Concurrent Mark-Sweep)垃圾回收器 是一种并发垃圾回收器,旨在减少垃圾回收时的停顿时间,适用于对低延迟要求较高的应用。CMS 主要通过并发标记和并发清除阶段来减少暂停时间。CMS 主要包含以下几个阶段: 1. CMS 的垃圾回收流程 C 阅读全文
posted @ 2024-12-11 19:08 Eiffelzero 阅读(209) 评论(0) 推荐(0) 编辑
摘要:Java 的 G1 垃圾回收流程 G1(Garbage-First)垃圾收集器 是一种区域化、并发、低延迟的垃圾回收器,适合大堆内存和对暂停时间有严格要求的应用程序。G1 的垃圾回收流程主要包括以下阶段: 1. 堆的区域化分区 在 G1 中,堆被分为多个大小相等的 Region,每个 Region 阅读全文
posted @ 2024-12-11 18:53 Eiffelzero 阅读(144) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示