用户SQL校验数据不一致
用户可以加no_result或者has_result这样的SQL hint来检查数据不一致。如果发生了不一致,就coredump。
代码插桩
在 PostgreSQL 17 之前,内核主干没有像 TiDB 或 MongoDB 那样的通用 Failpoint 机制。 PG 社区长期以来保持着极度保守和简约的设计哲学:
- 维护成本与代码污染:社区认为在生产内核代码中散落大量的 INJECTION_POINT(“name”) 会降低核心代码的可读性,且可能带入额外的运行时开销或死锁隐患。
- 倾向于常规隔离:PG 官方更喜欢通过锁机制、isolation_tester(利用锁等待控制并发)或者通过修改 GUC 参数控制特定逻辑分支来做测试。
PostgreSQL 17后, 社区为了更好地测试极端并发、WAL 重放、SLRU 缓存以及逻辑复制(Logical Replication)等微秒级的 Race Condition,最终打破了传统!1