全局二级索引与多活

共 19 题
#

1. 全局查询的优化器,CBO、统计信息?

A CBO 不需要统计信息,随机选择执行计划
B CBO 用统计信息估算各执行计划代价并选最优,分布式下还需考虑跨节点传输与下推 ✓ 正确答案
C 统计信息过时不影响 CBO 表现
D 分布式查询优化无需考虑网络传输代价
#

2. 分布式查询(Distributed Query)的下推(Pushdown),谓词、投影、聚合?

A 断言下推与谓词下推无关
B 下推会把所有数据传输到中心节点再计算,传输量大
C 下推把过滤、投影、聚合计算下推到各分片执行,减少跨节点传输的数据量 ✓ 正确答案
D 下推只适用于单机数据库,不适用于分布式
#

3. 跨分片 JOIN 的处理,广播 JOIN、Shuffle JOIN?

A 跨分片 JOIN 不需要特殊处理,直接连接即可
B 广播 JOIN 适合两个大表 JOIN
C Shuffle JOIN 只传输小表,成本最低
D 广播 JOIN 把小时表复制到各分片避免移动大表,Shuffle JOIN 按连接键重分布数据到各分片本地 JOIN ✓ 正确答案
#

4. 跨分片 JOIN 的代价,网络传输、数据倾斜?

A 数据倾斜只影响存储,不影响 JOIN 性能
B 跨分片 JOIN 没有额外代价,与单机 JOIN 相同
C 跨分片 JOIN 代价主要是网络传输(数据移动)与数据倾斜(热分片成为瓶颈),需减少传输并均衡分片 ✓ 正确答案
D 广播 JOIN 会比 shuffle 传输更多数据
#

5. 跨分片 JOIN 的实现,广播、Shuffle、Lookup?

A 广播 JOIN 复制小表、Shuffle JOIN 按连接键重分布、Lookup JOIN 按需查询,优化器按表大小与索引选择 ✓ 正确答案
B 三种 JOIN 实现完全相同,只是叫法不同
C Lookup JOIN 需要全量传输大表
D 广播 JOIN 适合任意大小的表
#

6. 全局二级索引(Global Secondary Index)的需求,跨分片查询?

A 全局二级索引为非分片键列建立全局索引,支持按索引键高效跨分片查询,避免全表广播 ✓ 正确答案
B 全局二级索引只作用于分片键列
C 没有全局索引时,非分片键查询也能高效定位分片
D 全局二级索引会增加主表写入速度,无需维护
#

7. 分布式查询的执行模型,MPP(Massively Parallel Processing)?

A MPP 不涉及数据倾斜问题
B MPP 由单体节点串行执行所有查询
C MPP 无法横向扩展,数据量固定
D MPP 把数据分片并让多节点并行执行子任务,再通过数据交换汇总,实现海量数据并行处理 ✓ 正确答案
#

8. 在线扩容(Online Scale-Out)的实现,TiDB、CockroachDB、YugabyteDB?

A 在线扩容需要停机,无法在不中断下完成
B TiDB/CockroachDB/YugabyteDB 通过节点加入 + 自动数据再平衡实现在线扩容,迁移过程对应用透明 ✓ 正确答案
C 在线扩容只需加机器,无需迁移数据
D 在线扩容只能读,不能写
#

9. 弹性扩缩容(Elastic Scaling)的需求,流量波动?

A 弹性扩缩容只针对固定容量,不随流量变化
B 弹性扩缩容根据实时流量动态加减节点,通过监控触发并配合数据再平衡,匹配高峰与低谷需求 ✓ 正确答案
C 弹性扩缩容只需加节点,无需监控和再平衡
D 弹性扩缩容与流量波动无关
#

10. 数据再平衡(Data Rebalance)的策略,均匀分布、业务感知?

A 数据再平衡只按数据量均匀分布,与负载无关
B 数据再平衡有均匀分布(按数据量)与业务感知(按负载)两种策略,业务感知可处理热点但迁移成本高 ✓ 正确答案
C 业务感知策略不需要监控负载
D 数据再平衡与热点处理无关
#

11. 单元化(Cell-Based)架构,用户绑定到特定单元?

A 单元化架构按用户维度划分独立单元,用户通过路由绑定到特定单元,实现隔离、容灾与多活 ✓ 正确答案
B 单元化架构把所有用户放在一个单元,便于管理
C 单元化无需路由,用户随机访问
D 单元化架构单元间数据不隔离,故障会互相影响
#

12. 多活(Multi-Active)的概念,多个数据中心同时对外服务?

A 多活中只有一个中心服务,其余备份
B 多活指多个数据中心同时对外服务,收益是资源利用与可用性,挑战是数据一致、路由与冲突解决 ✓ 正确答案
C 多活无需处理数据一致性
D 多活与主备架构完全相同
#

13. 全局二级索引如何保证与主表数据一致?TiDB 等系统为何用分布式事务或异步回填构建索引,写入放大如何控制?

A 建索引必须全程阻塞,无法异步
B 全局索引与主表可以不一致,无需保证
C TiDB 用分布式事务保证主表与索引原子一致,建索引用异步回填避免阻塞,通过控制索引数量与批量写缓解写入放大 ✓ 正确答案
D 全局索引不会增加写入放大
#

14. 多活架构中为什么多数系统选择单点写、多点读而非真双写?真双写需要满足哪些前提(冲突消解、时钟、幂等)?

A 真双写比单点写多点读更简单可靠
B 真双写无需处理冲突,任何系统都能实现
C 单点写多点读无法获得多活收益
D 真双写需解决写冲突、时钟、幂等等前提,复杂且风险高,因此多数系统用单点写多点读获得多活收益 ✓ 正确答案
#

15. 异地多活的冲突解决,最后写入获胜(LWW)、向量时钟?

A 异地多活无需冲突解决,复制自动一致
B LWW 能准确判断所有并发冲突
C 向量时钟开销小,适合大规模节点
D LWW 取时间戳最新写入、简单但可能丢更新且依赖时钟;向量时钟能准确判断并发但开销大 ✓ 正确答案
#

16. MPP 模型如何通过数据分片与并行执行扩展,其扩容与数据倾斜的挑战是什么?

A MPP 通过分片与并行扩展,挑战是扩容时数据迁移再平衡与数据倾斜导致的最慢节点瓶颈 ✓ 正确答案
B MPP 扩容无需迁移数据,直接加节点即可
C 数据倾斜不影响 MPP 扩展性
D MPP 无法横向扩展,只能纵向
#

17. 不用全局二级索引时有哪些替代方案,冗余表、广播小表、应用层维护索引各自的维护成本与一致性风险?

A 冗余表、广播小表、应用层索引都是无全局索引的替代方案,但都以手动维护一致性为代价,一致性风险较高 ✓ 正确答案
B 冗余表无需维护一致性,自动同步
C 应用层维护索引干脆利落,不会有数据不一致
D 广播小表适合任意大小的表,无成本
#

18. 缩容(Scale-In)的安全考量?

A 缩容需确保数据完整迁移、副本冗余不减、剩余节点容量够用,并更新路由,比扩容更需谨慎 ✓ 正确答案
B 缩容无需迁移数据,直接下线节点
C 缩容不会降低容灾能力
D 缩容后无需更新路由
#

19. 多活切换后的回切(failback)如何避免数据冲突?旧主追平校验与双写窗口的处理流程是什么?

A 回切需先让旧主追平校验一致,切换时关闭双写窗口(单点写),避免新旧主同时写入产生冲突 ✓ 正确答案
B 回切无需校验数据,直接切回
C 回切期间允许新旧主同时写,以保可用性
D 双写窗口是安全的,不会产生冲突