PostgreSQL 分区裁剪在什么条件下生效,为什么有时查询仍然扫描所有分区?
围绕“PostgreSQL 分区裁剪在什么条件下生效,为什么有时查询仍然扫描所有分区”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出查询条件含分区键、enable_partition_pruning 及执行期裁剪与计划期裁剪的区别。
程序员面试题库第 66 页,收录第 3251–3300 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
围绕“PostgreSQL 分区裁剪在什么条件下生效,为什么有时查询仍然扫描所有分区”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出查询条件含分区键、enable_partition_pruning 及执行期裁剪与计划期裁剪的区别。
围绕“PostgreSQL 分区数量过多会带来哪些问题,如何确定合理的分区粒度”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确规划时间增长与锁/目录开销,并给出按数据保留期与单分区大小估算粒度的方法。
围绕“PostgreSQL 声明式分区相比旧的表继承加触发器方案有哪些实质改进”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确路由由系统完成、计划期裁剪、分区维护 DDL 三方面的改进。
围绕“PostgreSQL 声明式分区的 RANGE、LIST、HASH 三种方式各自适合什么数据分布”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按时间连续、枚举值和均匀打散三种诉求匹配分区方式并说明默认分区的兜底作用。
围绕“pg_dump 导出的数据在多表并行写入时为什么仍然是一致的快照”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释导出在单个可重复读快照中运行从而保证库级一致性的机制及其长时间运行对死元组的影响。
围绕“PostgreSQL pg_dump 的 plain、custom、directory 格式在恢复灵活性上有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 custom/directory 支持并行恢复与选择性恢复而 plain 直接可执行,以及 pg_restore 的对应关系。
围绕“PgBouncer 的 session、transaction、statement 三种池化模式对应用语义各有什么影”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确事务级池化下 prepared statement、临时表与会话级 SET 失效的原因及适用场景。
围绕“物理备份和逻辑备份分别能恢复什么,如何为 PostgreSQL 制定组合备份策略”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按恢复粒度、跨版本恢复能力与备份体积对比两者,并给出全量加 WAL 归档加周期性逻辑导出的组合思路。
围绕“PostgreSQL 基于基础备份加 WAL 归档的 PITR 如何恢复到任意时间点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲清基础备份加连续归档的恢复链路与 recovery_target_time 等目标的设置。
围绕“PostgreSQL 连接池大小应该如何估算,为什么池子越大反而吞吐可能下降”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须基于 CPU 核数与 I/O 等待比例说明活跃后端过多导致争用的原因,并给出从小池加压测调整的方法。
围绕“PostgreSQL 中主键与 UNIQUE NOT NULL 组合约束在语义和实现上有什么实质区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明两者都创建唯一索引的前提下,主键在标识列、逻辑复制 REPLICA IDENTITY 和外键引用默认值上的特殊地位。
围绕“如何监控和诊断 PostgreSQL 备库复制延迟过大的原因”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分发送延迟、写入延迟与重放延迟三个指标,并指出大事务、长查询冲突与硬件瓶颈等常见成因。
围绕“PostgreSQL 复制槽解决什么问题,管理不当为什么会撑爆主库磁盘”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释复制槽防止 WAL 过早回收的机制及失联消费方导致 WAL 无限堆积的风险与监控手段。
围绕“PostgreSQL 流复制中 WAL 是如何从主库传到备库并应用的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 WAL 记录经 walsender/walreceiver 传输并由备库重放的流程及同步点概念。
围绕“PostgreSQL 事务 ID 回卷是什么,为什么接近回卷时数据库会强制只读甚至停库”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释 32 位事务 ID 环形比较与冻结机制,以及 datfrozenxid 年龄告警和紧急单用户模式的处置。
围绕“PostgreSQL 唯一约束中多个 NULL 为何不冲突,如何实现对 NULL 也唯一的列”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明默认 NULLS DISTINCT 语义,并给出部分唯一索引或 PostgreSQL 15 的 NULLS NOT DISTIN。
围绕“PostgreSQL 大版本升级有哪些方式,如何在大库上控制停机时间”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须对比 pg_upgrade(含 --link)、pg_dump 恢复与逻辑复制切换三者的停机窗口与风险。
围绕“PostgreSQL 中 ANALYZE 与 VACUUM 为什么常一起出现,统计信息过期会造成什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明统计信息驱动代价估算导致计划劣化的链路及 autovacuum 与 autoanalyze 的关系。
围绕“PostgreSQL 为什么必须执行 VACUUM,不清理会发生什么后果”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确回收死元组空间和防止事务 ID 回卷双重职责及各自失控后的症状。
围绕“PostgreSQL 的 VACUUM 与 VACUUM FULL 在锁和空间回收上的本质区别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明普通 VACUUM 只标记空间可复用而 FULL 重写整表并持有排他锁,并给出各自适用场景。
围绕“为什么在 activate 事件中清理旧版本缓存而不是在 install 事件中”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明版本化缓存名与清理时机的原因。
围绕“如何检测 PWA 已被安装以及当前是否运行在独立(standalone)窗口模式”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分安装事件监听与 display-mode 媒体查询两种检测。
围绕“Background Sync 如何在用户恢复网络后重放离线期间提交的表单请求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明注册 sync 事件与 IndexedDB 队列的配合,不讲推送通知。
围绕“beforeinstallprompt 事件如何用于实现自定义安装按钮,为什么默认安装横幅有时不出现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明事件拦截与延迟触发的实现及可安装性条件,不讲 manifest 字段细节。
围绕“Cache Storage API 和浏览器 HTTP 缓存有什么区别,为什么 PWA 离线要显式使用 Cache ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要对比程序化控制与浏览器启发式缓存的可控性。
围绕“带内容哈希的静态资源与 HTML 文档应分别采用什么缓存与失效策略”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分 immutable 长缓存与 HTML 短时效的处理。
围绕“Cache First 缓存策略适用于 PWA 中哪些资源,它最大的风险是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断适合缓存优先的资源类型及内容过期风险,不对比其他策略细节。
围绕“Cache Only 和 Network Only 两种极端策略各自适合什么资源”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分两类极端策略的资源归属与失败表现。
围绕“为什么把 fetch 的 Response 存入缓存前必须 response.clone()”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释响应流只能消费一次及 clone 的正确位置,不讲缓存策略。
围绕“PWA 是否应该把大体积音视频资源纳入离线缓存,取舍标准和替代方案是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖权衡配额占用与按需缓存/Range 请求方案,不讲通用缓存策略。
围绕“Clients.claim() 在什么时候需要调用,不调用会导致什么现象”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释激活后未受控页面的问题与调用时机。
围绕“监听 controllerchange 自动刷新页面为什么可能丢用户数据,更稳妥的做法是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断强制 reload 的数据丢失场景与一次性刷新标记设计,不讲提示 UI。
围绕“如何用 Chrome DevTools 的 Application 面板诊断 Service Worker 注册失败”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出注册状态、Update on reload、Cache Storage 的检查路径。
围绕“离线时图片加载失败如何用临时标记图回退,fetch 事件中如何实现按请求类型的回退”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖描述对图片请求返回预缓存临时标记资源的实现。
围绕“如何在 fetch 事件中识别页面导航请求(request.mode === 'navigate')并与静态资源分流”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明按请求模式分流到不同缓存逻辑的判断方式。
围绕“为什么 PWA 无法在用户首次访问时就提供离线能力,这对「离线可用」的宣传口径意味着什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 SW 需先安装激活才能接管请求的事实与预期管理,不讲安装流程细节。
围绕“为什么 Service Worker 只能在 HTTPS 下注册,localhost 为什么例外”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释安全上下文要求与本地开发例外。
围绕“Service Worker 的 install 事件中预缓存失败会发生什么,如何保证安装原子性”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释 waitUntil 失败导致安装中止的机制与降级方案。
围绕“iOS Safari 上 PWA 的离线能力有哪些实际限制,面试中应如何说明兼容方案”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕列举存储上限、安装入口等差异与降级思路。
围绕“Lighthouse 的 PWA 审计检查哪些离线相关项,常见不通过的原因有哪些”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕列举离线 200 响应、manifest、SW 注册等检查点与失败原因,不讲性能指标。
围绕“同一站点不同 scope 注册多个 Service Worker 会怎样,如何避免互相覆盖缓存”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释 scope 匹配优先级与缓存命名隔离的必要性,不讲生命周期。
围绕“Navigation Preload 如何降低 Network First 页面的启动延迟,启用后要注意什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明预加载请求与 SW 启动并行的机制及 fetch 事件配合,不讲策略对比。
围绕“Network First 策略在什么业务场景下优于 Cache First,网络超时时应如何兜底”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明网络优先的时效性收益与超时回退设计。
围绕“离线状态下 API 数据请求应该如何设计回退,返回缓存数据和返回错误提示如何取舍”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕权衡陈旧数据展示与明确离线提示的产品决策。
围绕“PWA 离线时如何为导航请求提供回退页面(offline fallback page),为什么需要单独处理导航请求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明导航请求与静态资源请求分开处理的原因及回退页实现。
围绕“navigator.onLine 和 online/offline 事件为什么不足以判断真实连通性,离线功能应如何兜”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖指出该 API 只反映网络接口状态及以请求失败为准的兜底设计,不讲 SW 缓存。
围绕“跨域 no-cors 请求缓存得到的 opaque response 有什么问题,如何影响存储配额统计”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明不透明响应无法校验状态与配额放大的风险,不讲 CORS 细节。
围绕“navigator.storage.persist() 的作用是什么,哪些浏览器行为会因持久存储授权而改变”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释持久存储对驱逐行为的影响与授权条件,不讲配额估算。
围绕“预缓存(precaching)和运行时缓存(runtime caching)的区别是什么,各自适合缓存什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖按安装时机划分两类缓存的资源归属。
围绕“渐进增强视角下,浏览器不支持 Service Worker 时站点应如何保证功能可用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明特性检测与核心功能不依赖 SW 的分层设计,不讲具体缓存实现。