JVM 性能工程与分库分表

共 68 题
#

1. JVM 启动参数对分库分表应用的影响,堆大小与连接池线程数的联动规划

A 堆大小与连接池无关
B 连接池线程数越多堆越大越优
C 分片数放大连接池内存,堆大小需与连接数、线程数联动规划留余量 ✓ 正确答案
D 只需规划堆大小
#

2. ShardingSphere Proxy 的线程模型与吞吐瓶颈

A Netty IO 线程 + 业务线程池,瓶颈在解析、连接与归并 ✓ 正确答案
B 单线程处理
C 无业务线程池
D 瓶颈只在网络
#

3. ShardingSphere 与数据库原生分布式事务(如 PolarDB)的边界

A 数据库原生把一致性下沉到 DB,ShardingSphere 在应用层协调,选型看能力与需求 ✓ 正确答案
B 原生事务无法用于 MySQL 分片
C 两者毫无关系
D ShardingSphere 只能强一致
#

4. ShardingSphere 事务日志与异常回滚的可观测性

A 无法观察回滚
B 只要提交成功即可
C 记录协调日志、参与方状态与回滚结果,定位失败分片与回滚完整性 ✓ 正确答案
D 事务日志不重要
#

5. ShardingSphere 分库分表的核心概念,逻辑表、真实表、分片键、分片算法

A 逻辑表与真实表相同
B 逻辑表是抽象,真实表是物理,分片键与算法决定路由 ✓ 正确答案
C 算法默认为全路由
D 分片键可选
#

6. ShardingSphere 基于 Atomikos 的 XA 强一致事务实现与性能损耗

A XA 无性能损耗
B 2PC 实现强一致,但 prepare/commit 往返与日志带来显著性能损耗 ✓ 正确答案
C XA 是最终一致
D XA 只需单次提交
#

7. ShardingSphere 解析引擎(ANTLR)性能与缓存

A 解析与性能无关
B 解析无法缓存
C 用 SQL 解析缓存复用 AST,降低 CPU 密集解析开销 ✓ 正确答案
D 每次 SQL 都重新解析最优化
#

8. 分库分表后的全局查询,如何用汇总层(宽表/ES)替代跨分片 Join

A 汇总层无需同步
B 宽表增加查询复杂度
C 用宽表冗余或 ES 汇总层承载全局查询,规避跨分片 Join ✓ 正确答案
D 跨分片 Join 性能最优
#

9. ShardingSphere 的 SQL 改写对查询计划的影响,子查询与聚合函数跨分片如何归并

A 改写后无需归并
B 聚合函数直接返回即可
C 改写使分片可执行,归并层处理聚合、排序、分页保证结果正确 ✓ 正确答案
D 子查询无需改写
#

10. 分库分表扩容的平滑迁移,双写、灰度切换与数据校验的流程

A 无需校验
B 直接切换即可
C 双写保增量、数据校验保一致、灰度切换降风险 ✓ 正确答案
D 双写会造成不一致
#

11. AES/SM4 字段加密与影子字段(assistedColumn)查询支持

A 影子字段用摘要/辅助值支持加密字段的查询 ✓ 正确答案
B 加密后无法查询
C 加密字段可直接范围查询
D 影子字段减少存储
#

12. Hint 强制走主库在读写分离中的事务一致性作用

A 对写后立即读等关键路径强制主库,保证一致但增加主库压力 ✓ 正确答案
B 主从延迟无影响
C 强制主库不影响性能
D 所有读都强制主库
#

13. JIT 编译器 C1/C2/Graal 的分层编译与内联启发式

A 只有 C1
B 内联无条件
C Graal 不优化
D C1 快速编译取 profile,C2 对热点做激进优化,内联按启发式减少调用 ✓ 正确答案
#

14. JVM 的 deoptimization 对可观测性的影响

A 只发生在 C1
B deoptimization 提升性能
C 无性能影响
D JIT 假设失效时回退到解释/低优化,产生性能尖峰,观测需结合其事件 ✓ 正确答案
#

15. NUMA 感知分配与压缩 oops 在大堆场景的应用

A 压缩 oops 增加内存
B NUMA 与性能无关
C 压缩 oops 只在 64GB 有效
D 压缩 oops 用 32 位指针省内存,NUMA 感知分配减少跨节点访问 ✓ 正确答案
#

16. ZGC 亚毫秒暂停与可扩展至 16TB 堆的设计

A ZGC 暂停很慢
B 用读屏障与染色指针实现并发收集,亚毫秒暂停、支持超大堆 ✓ 正确答案
C ZGC 只支持小堆
D ZGC 是串行收集器
#

17. JIT 编译对分片路由热路径的优化,高频执行的 SQL 解析代码如何被 C2 内联

A JIT 不优化热路径
B 内联无条件
C C2 内联热路径小方法,优化分片键提取与路由计算 ✓ 正确答案
D 分片路由无法优化
#

18. 分布式主键(Snowflake/UUID)在分片环境下的冲突与时钟回拨

A 两者相同
B UUID 按时间有序
C Snowflake 无时钟依赖
D Snowflake 有序利于分片但需处理时钟回拨,UUID 均匀但无序、较大 ✓ 正确答案
#

19. 分片键变更(改 sharding key)的工程代价,数据重分布与路由规则升级

A 变更会导致数据重分布与规则升级,成本高,应选稳定分片键 ✓ 正确答案
B 路由规则自动更新
C 分片键变更代价小
D 无需迁移数据
#

20. 分片后的二级索引,全局索引与本地索引的查询路径差异

A 全局索引无维护成本
B 本地索引非分片键查询需全路由,全局索引按索引键定位避免全路由 ✓ 正确答案
C 两者查询路径相同
D 本地索引可跨分片
#

21. JVM 堆大小与分片连接数,每个分片连接池占用与总堆内存的容量规划

A 总连接数 = 分片数 × 每分片连接池,连接缓冲与业务内存共同决定堆大小 ✓ 正确答案
B 连接越多越好
C 堆大小与分片数无关
D 连接池大小与堆无关
#

22. 本地事务 + 尽力送达消息在分片场景的柔性事务

A 本地事务跨库
B 消息可能丢失无需重试
C 需要分布式事务
D 本地事务保证本库一致,消息表与重试实现跨服务最终一致 ✓ 正确答案
#

23. 调度可观测,执行耗时、成功率、链路追踪埋点

A 指标与追踪无关
B 只记录成功
C 采集耗时与成功率指标,用链路追踪串联调度、执行、下游定位根因 ✓ 正确答案
D 无需追踪
#

24. 逃逸分析、标量替换与锁消除的 JIT 优化

A 锁消除只针对逃逸对象
B 标量替换增加对象
C 对象不逃逸时可标量替换消除堆分配、锁消除移除不可见锁 ✓ 正确答案
D 逃逸分析增加堆分配
#

25. Class Data Sharing (CDS) 与 AppCDS 减少容器启动时间

A 只共享 JVM 核心类
B 应用类归档为共享,减少类加载与验证,缩短启动时间 ✓ 正确答案
C 与容器无关
D 增加启动时间
#

26. ShardingSphere 的加密列(Encrypt)对查询性能的影响,密文索引与影子字段的取舍

A 影子字段不占存储
B 加密列查询无影响
C 密文可直接范围索引
D 加密损索引与查询,需密文索引或影子字段恢复等值查询但增加存储 ✓ 正确答案
#

27. ShardingSphere 的分布式主键(雪花)在分片路由中的应用,时钟回拨如何规避

A 雪花 ID 无法用于分片
B 雪花 ID 有序利于路由,时钟回拨通过记录最大时间、等待/拒绝规避 ✓ 正确答案
C 雪花 ID 依赖随机数
D 时钟回拨无影响
#

28. JVM 的 G1 停顿与分片批量导入的配合,大批量写入时如何降低 GC 频率

A 增大批次减小 GC
B GC 停顿不可控
C 批量导入与 GC 无关
D 复用缓冲降分配、控制批次、调 G1 参数可降低大批量写入的 GC 频率 ✓ 正确答案
#

29. Inline、Standard、Complex、Hint 四类分片策略的适用场景

A 四类都只支持单键
B Hint 依赖分片键
C Inline 支持多键
D Inline 简单取模,Standard 单键范围,Complex 多键,Hint 强制路由 ✓ 正确答案
#

30. 分库分表后的事务日志(undo/redo)与 JVM 堆外内存的配置关系

A 堆外耗尽不影响事务
B 事务日志只用堆内存
C 堆外内存无需配置
D 事务日志缓冲可能占堆外内存,需配置堆外大小与并发事务匹配 ✓ 正确答案
#

31. ShardingSphere 的读写分离,主从延迟对路由与事务一致性的影响

A 事务内可走从库
B 从库数据总是最新
C 主从延迟致读到旧数据,事务内或敏感查询需强制主库保一致 ✓ 正确答案
D 路由与延迟无关
#

32. 分片场景的容量规划,单分片数据量、连接数与 JVM 堆的匹配估算

A 连接数与堆无关
B 按数据量定分片数、连接数定并发、堆定内存,三者联动匹配 ✓ 正确答案
C 单分片数据量无上限
D 分片数越多越好
#

33. Seata 集成 ShardingSphere 的 AT 模式最终一致方案

A AT 是强一致
B 本地提交 + undo log 补偿实现最终一致,性能优于 XA ✓ 正确答案
C AT 无法集成分片
D AT 不需 undo log
#

34. ShardingSphere 5.x 内核模块(Infra、Kernel、Features)架构

A 无 SPI 扩展
B 只有 JDBC 形态
C 各功能独立无共享
D Infra 基础层、Kernel 核心层、Features 功能层,SPI 扩展且 JDBC/Proxy 共享内核 ✓ 正确答案
#

35. ShardingSphere Encrypt 对明文/密文字段自动加解密的拦截原理

A 不拦截 SQL
B 只能加密不能解密
C 应用需手动加解密
D 改写 SQL 加密写入、归并结果解密,应用透明读写明文 ✓ 正确答案
#

36. ShardingSphere Scaling 在线扩缩容与存量数据迁移

A 无需增量同步
B 切换前不校验
C 全量迁移 + binlog 增量 + 校验 + 切换实现在线扩缩容 ✓ 正确答案
D 迁移需停机
#

37. ShardingSphere 与 MyBatis/Spring Data 的集成陷阱

A 无需改数据源
B 需替换数据源、配置事务、确保分片键在 SQL 中,避免全路由 ✓ 正确答案
C 事务自动覆盖多分片
D 分片键可与 SQL 无关
#

38. ShardingSphere 元数据与配置中心(ZooKeeper/Nacos)集成

A 配置中心集中管理规则,监听变更热更新,多实例共享 ✓ 正确答案
B 配置变更需重启
C 不支持 ZooKeeper
D 配置中心不参与规则
#

39. ShardingSphere 在信创国产库的适配与兼容性注意点

A 所有函数都支持
B 国产库与 MySQL 完全一致
C 需适配方言解析、驱动、事务与类型映射,并做回归验证 ✓ 正确答案
D 无需方言适配
#

40. ShardingSphere 在异地多活单元化中的分片路由策略

A 分片与单元无关
B 跨单元事务强一致
C 分片键含单元维度,路由保证单元内数据自治与就近处理 ✓ 正确答案
D 单元间强一致
#

41. ShardingSphere 数据脱敏与动态脱敏规则配置

A 配置脱敏列与算法,访问时透明脱敏(如遮罩、加密) ✓ 正确答案
B 只能静态加密
C 脱敏规则不可配置
D 脱敏需应用手动处理
#

42. ShardingSphere 权限控制与 SQL 防火墙

A 防火墙不拦截 SQL
B 权限控制管访问授权,SQL 防火墙拦截非法 SQL 实现安全防护 ✓ 正确答案
C 无权限控制
D 只在 JDBC 形态可用
#

43. ShardingSphere 的 DistSQL 运维语言与在线变更配置

A DistSQL 与运维无关
B 需重启生效
C SQL 风格语法在线管理数据源与分片规则,支持热变更 ✓ 正确答案
D 只能查看不能修改
#

44. ShardingSphere 解析 SQL 并改写路由的实现原理

A 改写无需路由
B 流程为解析、路由、改写、执行、归并,解析提取分片信息 ✓ 正确答案
C 归并在解析前
D 解析后直接执行
#

45. ShardingSphere 读写分离的主从路由与负载均衡算法

A 读走主库
B 无负载均衡算法
C 事务内走从库
D 写走主库,读用轮询/随机/权重路由从库,事务内强制主库 ✓ 正确答案
#

46. ShardingSphere-JDBC 与 ShardingSphere-Proxy 的部署形态差异

A 两者部署相同
B JDBC 是独立代理
C Proxy 嵌入应用
D JDBC 嵌入式性能好但侵入应用,Proxy 独立集中管控但多一跳网络 ✓ 正确答案
#

47. ShardingSphere-JDBC 在连接池(HikariCP)下的连接管理

A 跨分片事务无需多连接
B 每个分片独立 HikariCP 连接池,路由时按分片取连接 ✓ 正确答案
C 一个连接池管所有分片
D 连接池与分片无关
#

48. ShardingSphere 的 SQL 审计与慢 SQL 拦截,如何定位跨分片查询的性能问题

A 审计与慢 SQL 暴露全路由、跨分片与归并耗时,据此优化 ✓ 正确答案
B 全路由性能最优
C 慢 SQL 与性能无关
D 审计无法反映分片
#

49. 分库分表的监控指标,分片延迟、路由次数与数据倾斜的观测

A 路由次数与全路由无关
B 数据倾斜正常
C 分片延迟、路由次数与数据倾斜反映性能、全路由与热点 ✓ 正确答案
D 只需监控总分片
#

50. JVM 直接内存与分片批量导入,Netty/缓冲池在数据迁移中的内存边界

A 缓冲池不占内存
B 直接内存归堆管理
C 直接内存无上限
D Netty/缓冲池用直接内存,需配置 MaxDirectMemorySize 与控制批大小防 OOM ✓ 正确答案
#

51. ShardingSphere 的配置中心集成,分片规则变更的热更新与灰度

A 监听配置变更热更新规则,多版本/标记实现灰度切换 ✓ 正确答案
B 热更新与配置中心无关
C 规则变更需重启
D 无法灰度
#

52. 分片下分页(LIMIT/OFFSET)跨节点归并的性能优化

A OFFSET 分页取数放大,可改用游标分页避免深 OFFSET ✓ 正确答案
B 分片分页无需优化
C 游标分页更慢
D OFFSET 越大性能越好
#

53. 分片结果归并(流式/内存)对大结果集的内存压力

A 内存归并最省内存
B 流式归并省内存,内存归并全量加载对大结果集压力大 ✓ 正确答案
C 归并与结果集无关
D 流式归并加载全部
#

54. 分片事务的对账与补偿,对账任务如何发现不一致并触发补偿

A 补偿不需幂等
B 对账无需状态比对
C 对账比对状态发现不一致,补偿幂等恢复,保证最终一致 ✓ 正确答案
D 对账后无需补偿
#

55. 分片键选择原则与避免跨分片查询的热点设计

A 分片键与查询无关
B 任意字段都行
C 选高频、分布均匀、覆盖主要查询的字段,避免热点与全路由 ✓ 正确答案
D 分布不均无影响
#

56. 分片键缺省时的全路由扫描如何避免,Hint 路由与索引兜底的设计

A Hint 增加全路由
B 用 Hint 强制分片或 GSI 索引表定位,避免全路由扫描 ✓ 正确答案
C 缺分片键无影响
D 全路由性能最优
#

57. 广播表、绑定表、单表在分片拓扑中的特殊处理

A 广播表只存一份
B 广播表全分片冗余,绑定表分片键对齐使 JOIN 同分片 ✓ 正确答案
C 单表路由到所有分片
D 绑定表跨分片 JOIN
#

58. 范围分片与取模分片在扩容再平衡时的数据迁移成本

A 取模扩容迁移少
B 取模扩容全量重分布,范围扩容增量迁移但易倾斜 ✓ 正确答案
C 范围分片分布均匀
D 两者扩容成本相同
#

59. JVM 启动预热与分片连接初始化,如何避免首请求延迟偏高

A 首请求延迟没法避免
B 预热无意义
C 启动预热 JIT 与缓存、连接池预建连接,消除首请求尖刺 ✓ 正确答案
D 连接懒加载最优
#

60. 分库分表后的数据一致性校验,抽样比对与对账任务的设计

A 对账无兜底
B 抽样比对不准确
C 只需全量比对
D 抽样比对降成本,对账任务定期比对并触发补偿 ✓ 正确答案
#

61. ShardingSphere 的加密功能与数据库迁移的配合,明文存量数据如何平滑升级

A 双列过渡先存明文与密文,存量加密后切换只读密文 ✓ 正确答案
B 存量明文无需处理
C 无法平滑升级
D 直接切换只读密文
#

62. 跨分片更新如何避免部分成功导致的数据不一致

A 跨分片更新天然一致
B 部分成功可接受
C 无需分布式事务
D 用 XA/Seata 或拆分为单分片更新 + 补偿,避免部分成功 ✓ 正确答案
#

63. JVM 的 -Xlog:gc 与分片写入吞吐的关联分析,如何定位 GC 引起的写入尖刺

A 叠加 GC 停顿时间与写入吞吐曲线,定位 GC 引起的写入尖刺 ✓ 正确答案
B GC 日志无用
C GC 与写入无关
D 尖刺总由 GC 引起
#

64. 分库分表的绑定表与广播表在 Join 查询中的应用边界

A 广播表单副本
B 跨分片键 Join 无问题
C 绑定表分片键一致可本地 Join,广播表用于小常量表,跨键 Join 需汇总层 ✓ 正确答案
D 绑定表可任意 Join
#

65. JVM 内存溢出与分片数据加载,大批量查询结果集对堆的压力

A 结果集不占堆
B 全量取数最优
C 分片放大结果集内存,需限制取数、流式、分批防 OOM ✓ 正确答案
D 分片不放大内存
#

66. 分片路由规则的单元测试,如何验证不同分片键的 SQL 改写结果

A 用多种分片键验证路由分片与 SQL 改写结果,覆盖边界与全路由 ✓ 正确答案
B 只测一个分片键
C 无法验证改写
D 路由规则无需测试
#

67. JVM 的 Metaspace 与分片 SQL 动态生成,动态 SQL 类/字符串对元空间的占用

A 动态生成类/字符串占 Metaspace,无界增长会 OOM,需缓存复用 ✓ 正确答案
B Metaspace 与 SQL 无关
C Metaspace 无上限
D 动态类在堆
#

68. 分片环境下的索引设计,本地索引与全局二级索引(GSI)的取舍

A GSI 无成本
B 高频非分片键查询用 GSI 避免全路由,低频用本地索引 ✓ 正确答案
C 所有查询都用 GSI
D 本地索引可跨分片