内容提要
PostgREST 12.2发布,增加了可观察性和API改进。新版本支持Prometheus指标,允许设置自定义超时时间,限制受影响的行数。已在Supabase平台上提供最新补丁版本。
延伸解读
Prometheus 指标:提升可观察性
PostgREST 12.2 新增了 Prometheus 兼容的指标,覆盖模式缓存和连接池。这些指标有助于故障排查,例如当连接池耗尽时,可以通过 /metrics 端点查看 pgrst_db_pool_timeouts_total 等计数器。这为运维人员提供了更细粒度的监控能力,便于及时发现和解决连接问题。
函数级超时设置:更细粒度的控制
在 12.2 中,可以为每个函数设置自定义超时时间。例如,在函数定义中使用 set statement_timeout to '4s',该设置会被提升并应用于每个事务。这避免了之前通过 API 角色设置超时影响所有 SQL 语句的问题。默认还支持 plan_filter.statement_cost_limit 和 default_transaction_isolation,并可通过 db-hoisted-tx-settings 扩展。
max-affected 偏好:灵活限制影响行数
之前版本只能通过 application/vnd.pgrst.object+json 将变更影响行数限制为 1 行。12.2 引入了 max-affected 偏好,允许自定义限制值。例如,在 DELETE 请求中设置 Prefer: max-affected=10,如果影响行数超过 10,则返回 400 错误和 PGRST124 代码。这为需要控制批量操作影响范围的场景提供了更大灵活性。
Q&A
PostgREST 12.2的新特性有哪些?
PostgREST 12.2增加了可观察性和API改进,支持Prometheus指标,允许设置自定义超时时间和限制受影响的行数。
如何在PostgREST 12.2中设置自定义超时时间?
可以在12.2项目中为每个函数设置自定义超时时间,通过在函数中使用set statement_timeout语句实现。
PostgREST 12.2如何处理受影响的行数限制?
新版本引入了max-affected偏好,允许用户自定义受影响的行数限制,支持更灵活的操作。
PostgREST 12.2的Prometheus指标有什么用?
Prometheus指标用于监控PostgREST的模式缓存和连接池,帮助排查连接超时等问题。
如何在Supabase平台上使用PostgREST 12.2?
PostgREST v12.2已在Supabase平台上提供,用户可以创建新项目或升级现有项目来使用最新版本。
PostgREST 12.2的max-affected偏好如何工作?
max-affected偏好允许用户在执行插入、更新或删除操作时限制受影响的行数,超过限制会返回错误。