PostgreSQL 练习答案与复盘尺
答案要能被另一台环境复跑:记录 PostgreSQL 版本、扩展、schema、执行计划和事务隔离设置。不要只贴“查询成功”,数据库更关心你在什么数据量和并发下成功。
SQL、类型与表设计
合格解法会用约束守住不变量,明确 NULL、时区、数值精度和枚举演进;迁移脚本可重复执行,失败时能回滚或留下清晰的修复步骤。
索引与查询计划
答案应对比 EXPLAIN (ANALYZE, BUFFERS) 的实际行数、缓存命中、排序和扫描方式;若计划估算错误,要检查统计信息、参数分布和数据倾斜,而不是盲目再加一棵索引树。
MVCC、事务与扩展
需要画出快照读、当前读、锁等待和 vacuum 的关系,说明长事务为何拖住清理。扩展题要写清版本兼容、权限、备份和卸载路径。
典型错误
- 将
timestamp当作带时区的事实,跨地区后出现“昨天/今天”分裂。 - 只测热缓存,不测冷缓存与统计信息过期。
- 以为 MVCC 自动解决所有写冲突,忽略唯一约束、锁和重试。