大量删除后 B+ 树索引为什么会出现空洞和性能下降,如何重建?
围绕“大量删除后 B+ 树索引为什么会出现空洞和性能下降,如何重建”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释删除只标记不收缩导致的稀疏页问题与 REINDEX 的代价。
数据库 · 性能优化面试题第 1 页,显示第 1–9 题,共找到 9 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“大量删除后 B+ 树索引为什么会出现空洞和性能下降,如何重建”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释删除只标记不收缩导致的稀疏页问题与 REINDEX 的代价。
围绕“B+ 树索引在插入时发生页分裂会带来什么性能影响,如何缓解”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明随机插入导致的分裂、空间利用率下降与顺序递增主键的缓解思路。
围绕“唯一索引和普通索引在查询性能和写入开销上有差别吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明唯一索引可提前终止等值查找、写入需唯一性检查的权衡。
围绕“相关子查询为什么可能很慢,什么条件下能被优化器改写为连接”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确逐行求值的执行模型与去相关化条件。
围绕“PostgreSQL 聚合函数的 FILTER (WHERE ...) 子句相比 CASE WHEN 条件聚合有什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 FILTER 只对满足条件的行做聚合的表达力与可读性差异,不比较执行性能基准。
围绕“UNION 和 UNION ALL 结果何时相同,为什么能确定无重复时应优先用 UNION ALL”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 UNION 隐式去重排序的开销及等价条件判断。
围绕“PostgreSQL 保存点(SAVEPOINT)允许事务内部分回滚,它与重试整条语句的方案有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕用单条语句失败后保留已做工作的场景回答,并指出子事务的性能成本。
围绕“高频冲突场景下用 SAVEPOINT 包住语句逐条处理,为什么会带来子事务性能问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释子事务 ID 分配与可见性判断变复杂带来的开销及批量提交的替代。
围绕“高并发计数器更新同一行成为热点时,为什么性能会急剧下降,有哪些缓解手段”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖从行锁串行化解释瓶颈并比较分桶计数、异步汇总等设计。