Change Streams 与校验与 WiredTiger 与压缩

共 19 题
#

1. WiredTiger 存储引擎的特性,MVCC、压缩、文档级锁?

A WiredTiger 是 MongoDB 默认的 MMAPv1 引擎
B WiredTiger 使用全局数据库锁,并发低
C WiredTiger 不支持任何压缩
D WiredTiger 支持 MVCC 快照隔离、压缩与文档级锁 ✓ 正确答案
#

2. Change Streams 与 Kafka 的协同(Debezium MongoDB Connector)?

A Kafka 无法消费 Change Streams 事件
B Change Streams 是 Kafka 的替代品
C Debezium 订阅 Change Streams 并把变更事件发布到 Kafka ✓ 正确答案
D Change Streams 只能用于本地实时查询
#

3. Change Streams 的 resume token、断点续传?

A resume token 只能用于单次会话
B resume token 与 oplog 无关
C resume token 标识变更流位置,用于断点续传,但依赖 oplog 未被覆盖 ✓ 正确答案
D resume token 会导致重复读取且无法恢复
#

4. Change Streams 的概念与应用,实时捕获集合变更?

A Change Streams 只能捕获查询结果
B Change Streams 实时捕获集合变更,支持 insert/update/delete 等事件 ✓ 正确答案
C Change Streams 需要轮询数据库
D Change Streams 不支持 delete 事件
#

5. Change Streams 的可用性与限制(open 变更流、事务中的变更、TTL 删除是否产生事件)

A Change Streams 无需保持 open 状态
B 事务内变更在提交前即可见
C TTL 删除不产生任何变更事件
D 事务内变更在提交后可见,TTL 删除会产生 delete 事件 ✓ 正确答案
#

6. drop、dropDatabase、rename 集合为何会触发 Change Streams 的 invalidate 事件并终止游标?应用应如何感知并重建变更流?

A drop/rename 集合会触发 invalidate 事件并终止变更流游标 ✓ 正确答案
B invalidate 事件不会终止游标
C invalidate 后应用可继续用原游标接收事件
D invalidate 只由普通数据插入触发
#

7. Change Streams 依赖 oplog 的时间窗口,resume token 对应的 oplog 被覆盖后为何无法续传?如何规划 oplog 大小?

A oplog 大小与续传无关
B oplog 是环形缓冲,resume token 对应记录被覆盖后无法续传,需规划足够大的 oplog ✓ 正确答案
C oplog 永远不会被覆盖
D resume token 不依赖 oplog
#

8. WiredTiger 的压缩算法,snappy、zlib、zstd?

A snappy 压缩率最高
B zlib 速度最快但压缩率最低
C snappy 速度快压缩率低,zstd 在压缩率与速度间取得平衡 ✓ 正确答案
D 压缩算法不影响 CPU 开销
#

9. WiredTiger 的检查点(Checkpoint)机制?

A 检查点把已提交数据持久化到磁盘,崩溃时结合 journal 回放恢复 ✓ 正确答案
B 检查点只在数据库关闭时生成
C 检查点与崩溃恢复无关
D 检查点会阻塞所有写入
#

10. WiredTiger 与原 MMAPv1 引擎的对比?

A WiredTiger 不支持压缩
B MMAPv1 并发高于 WiredTiger
C WiredTiger 采用文档级锁并支持压缩,优于 MMAPv1 的全局锁 ✓ 正确答案
D MMAPv1 是当前默认引擎
#

11. Change Streams 的事件语义,insert/update/replace/delete 与事务事件?

A update 事件包含 updateDescription,delete 事件包含 documentKey ✓ 正确答案
B delete 事件包含全量文档
C 事务内变更在提交前即可见
D replace 事件只包含字段级描述
#

12. Change Streams 的断点恢复,resume token 的实现与集群切换?

A 分片集群中一个 token 即可管理所有分片
B resume token 在集群切换后必然失效
C resume token 与 oplog 无关
D resume token 基于 oplog 时间戳,集群切换后只要 oplog 保留即可续传 ✓ 正确答案
#

13. validator 的 validationLevel/validationAction(warn/error)与存量文档的兼容处理

A validationLevel 只决定违规处置
B validator 默认会校验所有存量文档
C validationAction: error 拒绝违规写入,warn 仅记录警告 ✓ 正确答案
D warn 模式仍会拒绝写入
#

14. WiredTiger 的缓存管理与驱逐(cache_size、eviction)对读写延迟的影响

A 缓存只影响读,不影响写
B cache_size 越大驱逐越频繁
C 驱逐与读写延迟无关
D 缓存满时触发驱逐,若驱逐不及时会导致写延迟上升 ✓ 正确答案
#

15. WiredTiger 的 journal 与 checkpoint 如何配合崩溃恢复?未 checkpoint 的数据如何通过 journal 回放恢复?

A checkpoint 记录所有未提交写入
B 崩溃后无需 journal,直接丢失未 checkpoint 数据
C 崩溃后从最近 checkpoint 恢复,再回放 journal 恢复未 checkpoint 的已提交写入 ✓ 正确答案
D journal 只在正常关闭时写入
#

16. WiredTiger 的 block_compressor 与索引前缀压缩对写放大和查询性能有何影响?压缩率与 CPU 开销如何权衡?

A 索引前缀压缩会增大索引存储
B 压缩率越高 CPU 开销越低
C 压缩不影响写放大
D 压缩率越高磁盘越省但 CPU 开销越大,需在空间与 CPU 间权衡 ✓ 正确答案
#

17. Change Streams 与事务,事务内写入的变更事件何时对外可见?

A 事务内变更在事务提交后才对外可见,回滚则不产生事件 ✓ 正确答案
B 事务内变更在写入时即对外可见
C 回滚的事务也会产生变更事件
D 事务中变更在提交前即可被消费
#

18. WiredTiger 的快照隔离与并发控制,MVCC 与锁的配合?

A 锁用于控制读读冲突
B 读操作会阻塞写操作
C 快照隔离让所有写串行
D 读基于 MVCC 快照不阻塞写,写通过文档级锁控制冲突 ✓ 正确答案
#

19. Change Streams 在分片集群中的事件顺序保证(全局顺序 vs 分片内顺序)

A 同一分片内顺序保证,跨分片全局顺序不保证 ✓ 正确答案
B 分片集群中全局顺序严格保证
C 跨分片事件顺序也严格保证
D 分片内事件顺序不保证