性能调优实战专题测试
考察知识点
- 批量操作性能优化:ExecutorType.BATCH 执行器、foreach 批量插入、事务边界控制、内存管理策略
- 连接池调优:HikariCP 核心参数(minimumIdle、maximumPoolSize、maxLifetime、connectionTimeout、leakDetectionThreshold)、连接泄漏排查
- 缓存策略优化:MyBatis 二级缓存局限性、缓存穿透/击穿/雪崩识别与解决方案、分布式缓存一致性
- 执行计划分析:EXPLAIN 关键字段解读(type、key、dependent、rows)、Extra 字段性能信号识别
- 慢查询定位与优化:慢查询日志配置、mysqldumpslow 工具使用、多表 JOIN 优化策略、索引设计与优化
在 MyBatis 中进行大批量数据插入时,以下哪些做法可以有效提升性能?
使用 MyBatis 的 <foreach> 标签实现批量插入时,以下哪种配置方式是正确的?
某系统需要每小时向数据库插入约 50 万条日志记录,当前实现使用默认的 SqlSessionFactory 逐条插入,耗时超过 40 分钟且频繁出现连接超时和 OOM。请分析该方案的问题所在,并给出一个完整的高性能批量插入方案设计,包括:
- 执行器选择
- 批量大小设置
- 事务边界控制
- 内存管理策略
在 MyBatis 项目中,为了提高系统并发处理能力,应该将数据库连接池的最大连接数(maxActive/maxPoolSize)设置为尽可能大的值(如 1000),这样可以支持更多并发请求。
在 HikariCP 连接池配置中,以下参数分别控制不同的连接池行为,请填写每个参数的作用:
- ________________________:用于维持连接池的基础容量,避免低峰期连接全部关闭后高峰期重新创建。
- ______________________:超过该时间后连接会被强制关闭并重新创建,防止数据库端的连接超时导致"连接已关闭"异常。
- ________________________:开启后每次从连接池取出连接前会执行一次轻量级校验(如 SELECT 1),确保连接可用。
- ________________________:超过该时间仍未获取到连接则抛出异常,防止无限等待导致线程堆积。
某基于 MyBatis 的系统在高并发时段频繁出现 "Connection is not available, request timed out after 30000ms" 错误,但数据库端显示当前活跃连接数远低于连接池上限。最可能的原因是什么?
在 MyBatis 二级缓存与 Redis 集成的架构中,以下关于缓存问题的描述和解决方案,匹配正确的是?
在高并发系统中,关于 MyBatis 二级缓存(基于 namespace 的本地缓存)的局限性,以下哪些说法是正确的?
使用 MySQL 的 EXPLAIN 分析 SQL 执行计划时,以下关键字段反映不同维度的执行信息,请填写各字段的含义:
- ________________________:如 ALL(全表扫描)、ref(索引查找)、range(范围扫描)、index(全索引扫描)等,是判断查询效率的首要指标。
- ________________________:当该字段为 NULL 时说明没有使用索引。
- ________________________:当值为 dependent 时表示依赖外部查询,无法独立执行。
- ______________:该值越大说明查询需要处理的数据量越大,优化时应重点关注该值较高的查询。
分析 SQL 执行计划时,EXPLAIN 输出的 Extra 字段出现以下哪些值时,说明该查询存在明显的性能问题需要优化?
在 MySQL 中定位慢查询时,以下关于慢查询日志的配置和使用,说法错误的是?
某电商系统的商品搜索接口在生产环境经常出现响应超时(>5s),经排查该接口底层通过 MyBatis 执行一条多表 JOIN 查询。请设计一套完整的慢查询定位与优化流程,包括:
- 如何在生产环境中发现并收集慢查询信息
- 如何分析该 SQL 的性能瓶颈
- 针对多表 JOIN 场景,列举至少 4 种具体的优化手段
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验