# 1. 单表数据量到多大需要考虑分表?"2000 万行"经验值的由来(B+ 树层高与页大小推导)及其局限? A 表数据量只与行数有关,与索引层高无关 B 任何表超过 2000 万行都必须立刻分表 C 2000 万行是数据库硬性上限,与页大小无关 D 它由 B+ 树层高、页大小与记录大小推导而来,实际应结合行大小、内存与索引综合判断 ✓ 正确答案
# 2. 亿级数据深分页(OFFSET 大值)的性能问题与优化方案(游标/子查询/延迟关联)如何选型? A OFFSET 深分页与页数无关,永远很快 B 游标分页基于排序键定位复杂度稳定,适合顺序翻页;延迟关联适合任意跳页 ✓ 正确答案 C 深分页优化只需加索引无需改 SQL D 延迟关联会增加回表次数,一定比 OFFSET 慢
# 3. 秒杀场景的端到端设计,前置限流、Redis 预扣、MQ 异步落库与最终对账 A Redis 预扣后无需再落库,数据天然一致 B 秒杀只靠数据库行锁就能扛住所有并发 C 用 Redis 预扣扛并发、MQ 异步落库削峰,并用最终对账兜底一致性 ✓ 正确答案 D 秒杀不需要限流,只需加大数据库硬件
# 4. 亿级大表的在线归档方案设计,分区裁剪、影子表迁移、双写切换如何选择? A 归档必须停机进行,不能在线 B 分区裁剪按时间丢冷分区收益大且改动小,影子表/双写适合需重建结构的场景 ✓ 正确答案 C 分区裁剪会丢失所有历史数据 D 双写切换只适用于读库,不适用于写库
# 5. 订单表的冷热分离设计,路由层、汇总查询与历史查询体验如何兼顾? A 冷库不需要任何索引,靠全量扫描即可 B 冷热分离后历史数据完全不可查询 C 路由层按时间/维度分发请求,冷库建索引分区并预聚合以兼顾历史查询体验 ✓ 正确答案 D 冷热分离与路由层无关,只改存储即可
# 6. 订单号/流水号生成如何兼顾趋势递增、全局唯一与高并发,号段模式与 Snowflake 如何取舍? A 号段模式完全不需要数据库 B Snowflake 生成的 ID 一定连续 C 号段模式中心发号连续可读,Snowflake 无中心高并发但依赖时钟,按需取舍 ✓ 正确答案 D 两种方案都无法保证全局唯一
# 7. 读写分离下的"主从延迟导致读旧数据"场景,强制主库读、延迟容忍、双写一致如何权衡? A 强一致读走主库、弱一致读走从库,并监控延迟设置降级兜底 ✓ 正确答案 B 主从延迟永远无法解决,只能接受 C 所有读都必须走从库才能保证性能 D 强制主库读会降低一致性
# 8. 高并发读多写少的缓存架构,缓存层级、淘汰与一致性? A 多级缓存配合 Cache-Aside,先更新数据库再删缓存,并用 TTL 与防击穿雪崩手段 ✓ 正确答案 B 缓存越层越多越好,无需考虑一致性 C 只需缓存数据,无需设置 TTL 或淘汰策略 D 写路径应直接更新缓存,数据库可以不用写
# 9. 订单系统的数据库设计,读写分离、分库分表与缓存的一致性? A 订单系统必须使用单库,绝不能分库分表 B 按用户维度分库分表便于单用户事务,配读写分离与缓存,并保证幂等与最终一致 ✓ 正确答案 C 分库分表后跨分片查询无需任何处理 D 缓存一致性可完全忽略,直接读缓存即可
# 10. 秒杀系统的库存扣减,数据库行锁 vs Redis 预扣减的取舍? A 数据库行锁列与 Redis 无关,任何并发都能扛住 B Redis 预扣无需与数据库对账,天然一致 C 低并发用数据库行锁强一致,高并发秒杀用 Redis 预扣削峰加异步落库与对账 ✓ 正确答案 D 秒杀永远应该用数据库行锁,Redis 无法保证不超卖
# 11. 亿级数据的分页查询,游标分页 vs offset 深分页的性能? A offset 深分页与页数无关,性能恒定 B 游标分页基于排序键定位每页只扫一页,offset 深分页随偏移量线性恶化 ✓ 正确答案 C 游标分页支持任意跳页,无所不能 D 两种方式的性能完全相同
# 12. 热点账户扣减的余额拆分/异步记账方案与对账 A 热点账户只能串行更新,无法优化 B 余额拆分把负载分散到分片、异步记账摊平流量,并用对账保证最终一致 ✓ 正确答案 C 余额拆分无需对账,天然一致 D 异步记账会提高实时性,减少延迟
# 13. 一个"热点账户扣款"场景从表结构、SQL 到应用层如何系统性设计? A 热点账户扣款无需考虑幂等与对账 B 扣款只需一条 UPDATE 语句,无需明细表 C 分离余额与明细账,用条件更新防超扣,并用幂等、异步过账与对账保证最终一致 ✓ 正确答案 D 条件更新无法防止超扣
# 14. 数据库容量规划与分库分表,什么规模该拆分? A 只要表超过 1000 万行就必须立刻分库分表 B 综合数据量、并发、性能、内存等多维度测量预测,先优化再在需要时拆分 ✓ 正确答案 C 容量规划只考虑行数,与其他指标无关 D 分库分表无需评估,直接做即可
# 15. 千万级用户的库表设计,主键策略、索引与归档? A 主键权衡顺序性与分布式,索引匹配查询,并按时间归档冷数据控制热表 ✓ 正确答案 B 主键只能用自增,且不能有任何索引 C 千万级用户无需归档,热表多大都行 D 索引越多越好,无需考虑写入开销
# 16. 数据库连接池耗尽与雪崩,快速失败与限流? A 用快速失败、限流、超时熔断、监控与隔离防止连接被占满导致雪崩 ✓ 正确答案 B 连接池耗尽无需处理,自然会恢复 C 请求应无限排队等待连接,直到拿到为止 D 限流与连接池无关,无法防止雪崩
# 17. 冷热数据分离与归档,分表与归档表的方案? A 分表/归档表让热表小高命中,冷数据迁出低成本存储并支持历史查询 ✓ 正确答案 B 冷热分离后冷数据必须立即删除,不可保留 C 归档表不需要索引,全靠扫描 D 分表与归档无法共存,只能选其一
# 18. 数据归档的生命周期管理(保留周期、存储分层、合规) A 合规只要求保留,不要求删除 B 数据应永久保留,绝不可删除 C 存储分层与数据价值无关,随意分配即可 D 按价值分热温冷归档等层,按合规设保留周期并自动降级与清理 ✓ 正确答案