事务与副本集与分片与 Balancer

共 19 题
#

1. MongoDB 多文档事务(4.0+)的实现,基于 WiredTiger 的 MVCC?

A 事务提交无需多数派,单节点即可完成
B 事务基于 WiredTiger 的 MVCC 快照隔离,提交需多数派确认 ✓ 正确答案
C 事务内读取基于最新提交,不提供快照
D 多文档事务只能在单机模式下运行
#

2. 副本集的选举(Election)机制,基于 Raft?

A 选举完成后无需同步数据
B 选举只需任意一个 secondary 自封 primary
C priority 高的节点选举时一定失败
D 选举基于多数派投票,借鉴 Raft 但并非严格 Raft ✓ 正确答案
#

3. MongoDB 分片(Sharding)的架构,mongos、config server、shard?

A mongos 存储数据,shard 负责路由
B config server 保存 chunk 元数据,mongos 路由查询到 shard ✓ 正确答案
C 每个 shard 必须是一个单节点
D 分片集群不需要 config server
#

4. 分片键(Shard Key)的选择,基数、频率、单调性?

A 单调递增键会导致写入集中在最新分片,产生热点 ✓ 正确答案
B 分片键基数越低越好,便于集中
C 分片键可以随意更改
D 高频取值有助于数据均匀分布
#

5. 副本集(Replica Set)的架构,Primary、Secondary、Arbiter?

A Arbiter 存储全部数据并参与写入
B Primary 可以同时有多个,共同写
C Secondary 不接受写操作但会存储数据并可被选举
D Arbiter 参与选举投票但不存储数据 ✓ 正确答案
#

6. 分片集群的 chunk 分裂与均衡(chunkSize、jumbo chunk)对查询性能的影响

A chunk 越大均衡粒度越精细
B jumbo chunk 无法分裂也无法迁移,导致分片数据倾斜 ✓ 正确答案
C chunk 分裂与 Balancer 无关
D jumbo chunk 是良性状态,不影响性能
#

7. MongoDB 跨分片事务如何用两阶段提交(prepare/commit)协调多个分片?协调者或分片故障时事务如何恢复?

A prepare 阶段不持久化事务状态,故障无法恢复
B 跨分片事务无需协调者,各分片自行提交
C 跨分片事务由 mongos 协调,采用两阶段提交(prepare/commit) ✓ 正确答案
D 跨分片事务提交不需多数派确认
#

8. MongoDB 事务的读关注默认值(local)与强一致场景下 majority 的取舍?事务内 write concern 与 read concern 的组合如何影响性能与一致性?

A 事务读关注默认 local,majority 可避免读到已回滚数据但增加延迟 ✓ 正确答案
B 事务内 write concern 越低越持久
C read concern majority 提高性能
D 事务不需要 write concern
#

9. Balancer 的工作原理,自动迁移分块?

A Balancer 无法手动开关
B Balancer 只负责分裂 chunk,不迁移
C Balancer 迁移 chunk 不影响任何性能
D Balancer 自动在各分片间迁移 chunk,把数据多的分片迁移到少的 ✓ 正确答案
#

10. 分片集群的元数据存储,config server?

A config server 存储实际数据
B config server 存储 chunk 元数据,通常以副本集高可用部署 ✓ 正确答案
C config server 故障不影响集群路由
D config server 只需一个节点即可
#

11. 副本集的回滚(Rollback)机制?

A 回滚丢弃旧 primary 未复制到多数派的写入,数据以多数派为准 ✓ 正确答案
B 回滚后数据以旧 primary 为准
C 回滚只发生在正常运行时
D 回滚不需要 oplog 比较
#

12. MongoDB 事务的实现?

A 事务提交与副本集无关
B 事务基于单节点内存实现,无需持久化
C 事务基于 WiredTiger MVCC 快照隔离,提交需多数派确认 ✓ 正确答案
D 事务默认读关注 local 即可
#

13. 分片策略,哈希、范围、Zone?

A Zone 分片用于扩大数据分布
B 范围分片对单调键无热点问题
C 哈希分片保证数据均匀分布,但范围查询效率低 ✓ 正确答案
D 哈希分片支持高效范围查询
#

14. 跨分片事务的支持与性能边界(读偏好、聚合限制)

A 跨分片事务内读操作必须路由到主节点,且提交延迟较高 ✓ 正确答案
B 跨分片事务可以自由使用 secondary 读偏好
C 跨分片事务性能与单分片无差异
D 跨分片聚合无内存限制
#

15. Balancer 迁移对线上读写的影响(moveChunk 抖动)与迁移窗口配置

A 迁移只能在高峰期执行
B 迁移 chunk 不影响任何读写性能
C moveChunk 会占用网络与 IO 并造成读写抖动,可通过迁移窗口避开高峰 ✓ 正确答案
D 迁移窗口无法配置
#

16. 副本集选举中 priority 与 votes 参数如何影响选主?为什么 votes 为 0 的成员既不能投票也不能被选举?

A votes 为 0 的节点永远无法当选 ✓ 正确答案
B votes 为 0 的成员不参与投票,但可被选举为 primary
C priority 与当选无关
D votes 决定节点是否存储数据
#

17. MongoDB 分片集群的 zone 与 tag 设置如何实现数据本地化(多租户/合规)?

A 通过 tag 给分片打标、zone 绑定分片键范围,实现数据本地化 ✓ 正确答案
B zone 只用于扩大分片数量
C tag 与数据路由无关
D zone 无法实现多租户隔离
#

18. mongos 的连接池与会话亲和性(对事务的支持)

A mongos 连接池与事务无关
B mongos 通过会话维护事务状态,确保同一事务路由到正确分片 ✓ 正确答案
C 跨分片事务不需要会话
D mongos 是存储数据的分片
#

19. 为什么大事务会报 TransactionTooLargeForCache?事务写集大小限制与拆分批次策略如何设计?

A 事务写集大小无限制
B 大事务写集需常驻缓存,超过缓存限制会报错,应拆分批次 ✓ 正确答案
C 该错误与事务大小无关
D 拆分批次会使事务更慢,应避免