PostgreSQL 复制槽解决什么问题,管理不当为什么会撑爆主库磁盘?
围绕“PostgreSQL 复制槽解决什么问题,管理不当为什么会撑爆主库磁盘”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释复制槽防止 WAL 过早回收的机制及失联消费方导致 WAL 无限堆积的风险与监控手段。
SQL专题面试题第 2 页,显示第 51–100 题,共找到 148 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“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 重写整表并持有排他锁,并给出各自适用场景。
围绕“直接把过滤参数拼进查询语句的列表接口有什么注入风险,如何防御”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明白名单字段与参数化查询的防御边界。
围绕“MySQL/PostgreSQL 的 B+ 树索引是如何组织并支持等值查找的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲清非叶子节点只存键值、叶子节点链表相连的结构与 O(log n) 查找过程。
围绕“PostgreSQL 的 INCLUDE 非键列和直接加进索引键有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分 INCLUDE 列不参与排序只随叶子存储的设计意图。
围绕“PostgreSQL 的 Index-Only Scan 为什么有时仍然要访问堆表”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释可见性判断依赖 visibility map、VACUUM 后才真正免堆访问。
围绕“EXPLAIN 和 EXPLAIN ANALYZE 的区别是什么,生产环境用后者要注意什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 ANALYZE 真正执行 SQL 返回实际行数与耗时的副作用风险。
围绕“MySQL 的 FORCE INDEX 什么时候应该使用,长期依赖它有什么风险”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明统计失真时的临时干预价值与数据变化后计划僵化的隐患。
围绕“IS NULL 查询能用上 B 树索引吗,PostgreSQL 和 MySQL 行为有何差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 PostgreSQL B 树存 NULL 可索引而部分实现不存的差异。
围绕“PostgreSQL 部分索引适合什么场景,比全索引有什么优势”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出只索引满足条件的子集、减小体积提升效率的判断。
围绕“优化器如何估算一个 LIKE 'abc%' 条件会过滤出多少行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 MCV 与直方图在范围/前缀匹配估算中的作用。
围绕“MySQL 8.0 的索引跳跃扫描能在什么条件下绕过最左前缀限制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明前导列基数低时枚举前导值实现跳跃扫描的适用边界。
围绕“MySQL 的 filesort 是什么,它是额外文件排序吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须澄清 filesort 不一定是磁盘文件排序、内存放不下才落盘。
围绕“PostgreSQL 排序溢出到磁盘在 EXPLAIN 中怎么看,如何调优”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须识别 Sort Method: external merge 信号并给出调大 work_mem 的方案。
围绕“PostgreSQL 多列强相关时单列统计为何会严重低估行数,怎么解决”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明独立列假设导致的选择性相乘误差与 CREATE STATISTICS 的作用。
围绕“对空表执行不带 GROUP BY 的 SUM/COUNT 为什么返回一行而不是零行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确无 GROUP BY 时全表视为一组的语义及 SUM 返回 NULL 的 COALESCE 处理。
围绕“查找「没有订单的客户」时 NOT EXISTS、NOT IN 和 LEFT JOIN ... IS NULL 哪个更”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 NOT IN 遇 NULL 返回空集的陷阱及三者语义等价条件,不深入执行计划。
围绕“COALESCE 和 NULLIF 分别解决什么问题,嵌套使用能实现什么常见转换”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 COALESCE 取首个非空、NULLIF 相等则置空的互补语义及空串转 NULL 等组合用法。
围绕“相关子查询为什么可能很慢,什么条件下能被优化器改写为连接”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确逐行求值的执行模型与去相关化条件。
围绕“SQL 的 CROSS JOIN 在什么场景下是正确选择而不是误用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确需要显式生成组合(如日期维度×门店)时的合理性。
围绕“PostgreSQL 的 WITH (CTE) 在什么版本后默认内联,MATERIALIZED 关键字何时该用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 PostgreSQL 12 起非递归单次引用 CTE 默认内联、MATERIALIZED 强制物化的适用场景。
围绕“PostgreSQL 的 DISTINCT ON 如何按指定排序取每组第一条,和标准 DISTINCT 有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 DISTINCT ON 与 ORDER BY 前缀必须匹配的规则及其与窗口函数方案的取舍。
围绕“只做去重时 DISTINCT 和 GROUP BY 语义是否完全等价,优化器如何看待它们”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确无聚合时二者语义等价及 PostgreSQL 优化器常按同一路径处理的事实。
围绕“PostgreSQL 聚合函数的 FILTER (WHERE ...) 子句相比 CASE WHEN 条件聚合有什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 FILTER 只对满足条件的行做聚合的表达力与可读性差异,不比较执行性能基准。
围绕“如何用窗口函数把连续签到日期合并成连续区间(gaps and islands)”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确日期减行号生成岛标识再分组聚合的经典解法逻辑。
围绕“SQL 中 WHERE 和 HAVING 的过滤顺序是什么,各自能引用什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 HAVING 作用于聚合后分组、WHERE 作用于聚合前行,且 WHERE 不能用聚合函数。
围绕“为什么 MySQL 旧模式允许而 PostgreSQL 拒绝 SELECT 中未聚合也未分组的列”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确结果不确定性的语义原因及 PostgreSQL 对功能依赖主键列的例外,不比较两家全部方言差异。
围绕“ROLLUP、CUBE 和 GROUPING SETS 分别生成哪些分组层级,结果里的 NULL 如何区分”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确三者生成维度子集的差异及 GROUPING() 区分真实 NULL 与汇总临时标记 NULL。
围绕“子查询结果含 NULL 时 NOT IN 返回空结果而 NOT EXISTS 正常,原因是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 NOT IN 展开为 <> ALL 遇 NULL 得 UNKNOWN 的三值逻辑推导。
围绕“INTERSECT 和 EXCEPT 如何处理重复行,EXCEPT 的左右顺序为什么重要”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确两者默认去重、EXCEPT 非对称的语义及 ALL 变体保留重复的行为。
围绕“LEFT JOIN 的过滤条件写在 ON 里和写在 WHERE 里结果为什么不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 ON 在连接前过滤、WHERE 在连接后过滤导致 NULL 行被剔除的语义差异。
围绕“多对多连接时 SQL JOIN 为什么会产生重复行,如何诊断并消除”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确连接键非唯一导致的行膨胀机制及 DISTINCT/预聚合两种修复的取舍,不讲索引优化。
围绕“为什么 SQL 中 INNER JOIN 换成 LEFT JOIN 后结果行数可能变多也可能不变”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确连接匹配失败时左表行的保留规则及行数变化条件。
围绕“LAG/LEAD 在首行或末行返回 NULL,如何给出默认值并避免类型转换错误”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确第三参数默认值与表达式求值范围,以及默认值类型需与列匹配的注意点。
围绕“PostgreSQL 的 LATERAL 连接如何简化「每组取最新一条」的查询”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 LATERAL 允许子查询引用左表列从而逐组求 top-N 的机制。
围绕“为什么只写 LIMIT 不写 ORDER BY 的查询结果不可依赖,即使多次执行看起来一样”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确无 ORDER BY 时行序由执行计划与存储决定、无语义保证的原因。
围绕“SQL SELECT 的逻辑执行顺序是什么,为什么 SELECT 里起的别名不能在同层 WHERE 用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 FROM→WHERE→GROUP→HAVING→SELECT→ORDER BY 的顺序及别名作用域推论。
围绕“PostgreSQL 的 MVCC 下,同一事务里两次相同的 SELECT 在什么隔离级别下结果可能不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 READ COMMITTED 每条语句取新快照而 REPEATABLE READ 用事务级快照的差异。
围绕“为什么生产代码中通常不建议使用 NATURAL JOIN”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确按同名列自动匹配在表结构变更时的脆弱性。
围绕“NTILE 和 PERCENT_RANK 都表达相对位置,分桶结果在什么数据下差异明显”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 NTILE 均分行数而 PERCENT_RANK 按秩归一化的计算差异及并列处理。
围绕“为什么 NULL = NULL 不成立,SQL 的三值逻辑如何让 WHERE 条件「静默丢行」”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 TRUE/FALSE/UNKNOWN 的传播规则及 UNKNOWN 被 WHERE 视为不通过的后果。
围绕“聚合函数遇到 NULL 列时各自如何处理,AVG 的分母是否包含 NULL 行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确除 COUNT(*) 外聚合忽略 NULL 的规则及 AVG 分母只计非 NULL 行。
围绕“PostgreSQL 排序时 NULL 默认排在哪,NULLS FIRST/LAST 如何影响分页”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 ASC 默认 NULLS LAST、DESC 默认 NULLS FIRST 及显式指定对稳定分页的影响。
围绕“如何用 PostgreSQL 递归 CTE 查询组织架构下某节点的所有下级并防止环”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确锚成员+递归成员的求值过程及路径数组防环写法。