SuperAPI AI 工具集

db-replicas-views

通用与其它

查看项目

更新于 10-15 22:11

技能介绍

用途:审计读扩展场景下的正确性,聚焦两类陈旧问题——读请求被路由到异步只读副本导致的“读己之写”失效,以及物化视图刷新策略不当导致的数据陈旧。属于性能与规模(performance)关注点。

主要能力:检测副本路由配置(ORM/驱动中的读写分离、多个连接 URL)、对同一实体的写后读序列、CREATE MATERIALIZED VIEW DDL 及 REFRESH 调用(是否带 CONCURRENTLY)。Tier-0 静态检测;实际复制延迟与刷新新鲜度属运行时,需 needs_api,不会静默通过。Tier-1/2 在 Postgres 上验证:复制延迟查询 SELECT client_addr, state, pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) AS replay_lag_bytes FROM pg_stat_replication; 物化视图状态查询 SELECT matviewname, ispopulated FROM pg_matviews; 方法为 query_stat / schema_introspect。

发现示例:M17.comments.read_your_writes_on_replica(写后立即读被路由到副本,severity 3,warn,performance,可修复:建议路由到主库);M17.dashboard.matview_no_refresh(无可见刷新计划,severity 2,warn,needs_api,建议性);M17.dashboard.refresh_blocks_readers(REFRESH MATERIALIZED VIEW 未加 CONCURRENTLY,severity 2,warn,可修复:建议加 CONCURRENTLY)。每条发现含 evidence.observed 原文引用、verification.reproduce 引用 $DATABASE_URL 的查询、expected_impact 带置信度标签。

适用场景:使用只读副本或物化视图做读扩展、且读路径需要刚写入数据的应用。

限制:副本陈旧对多数分析/报表读取是设计使然,仅在读路径需要自身刚写数据时标记;无法测量的延迟数字或陈旧概率不得引用,延迟结论需 Tier-1 才成立,否则仅为方向性;REFRESH … CONCURRENTLY 需物化视图上有唯一索引,修复预览中会注明;路由/刷新变更仅为建议,绝不自动执行。