数据库流量控制
摘要
PlanetScale 推出数据库流量控制(Database Traffic Control),这是一款 Postgres 流量管理系统,允许用户对数据库资源实施灵活预算,从而防止因不良查询或失控工作负载导致的过载。
暂无内容
查看缓存全文
缓存时间: 2026/07/02 05:03
# 数据库流量控制功能登场 — PlanetScale
来源:https://planetscale.com/blog/introducing-database-traffic-control
PostgreSQL 在管理查询流量方面存在一个根本缺陷。当意外的不良查询激增或失控的工作负载冲击数据库时,PostgreSQL 并没有有效的应对手段。它会接收所有发来的查询,直至性能下降,甚至在最坏的情况下导致服务器宕机。
今天,我们推出**数据库流量控制平台(Database Traffic ControlTM)** ,这是内置于 PlanetScale 的 PostgreSQL 流量管理系统,允许您对数据库流量设置灵活的预算。使用流量控制,您可以实时决定每个工作负载可以消耗多少数据库资源,而 PostgreSQL 将强制执行这些限制。
## 工作原理 (https://planetscale.com/blog/introducing-database-traffic-control#how-it-works)
流量控制允许您创建针对查询流量子集的预算。您可以通过匹配不同维度的规则来指定哪些查询归入预算,维度包括:
- **查询模式:** Insights 中识别出的特定查询指纹
- **应用名称:** 发送查询的应用
- **PostgreSQL 用户:** 执行查询的数据库用户
- **自定义标签:** 您通过 SQL 注释附加到查询上的任何元数据(功能名称、优先级、区域、客户等级等)
确定预算中的查询后,您可以定义该预算允许使用的资源限制。您可以对 CPU 百分比、CPU 突发限制、后端进程并发数和单查询执行时间等设置上限。
预算可以运行在**警告**模式下观察哪些内容会被限流,或运行在**强制执行**模式下主动阻止超出限制的查询。您还可以随时切换模式。
PlanetScale Insights (https://planetscale.com/docs/postgres/monitoring/query-insights) 会跟踪针对数据库运行的所有查询的统计数据。当出现问题时,您可以在 Insights 中找到问题查询,查看详细使用数据,并通过几次点击设置预算来限制它。
## 使用场景 (https://planetscale.com/blog/introducing-database-traffic-control#use-cases)
流量控制功能强大且灵活,在各种场景中都有助于预防和减轻数据库相关事件的影响。
### 事件响应 (https://planetscale.com/blog/introducing-database-traffic-control#incident-response)
某个异常查询导致 CPU 飙升,拖慢整个应用的性能。在 Insights 中找到它,对其资源使用设定预算,稳定数据库,同时让团队调查并发布修复方案。
### 基于优先级的流量整形 (https://planetscale.com/blog/introducing-database-traffic-control#priority-based-traffic-shaping)
按优先级(高、中、低)为查询打上标签,并为每个层级创建预算。核心功能(如身份验证和关键用户流程)可以有更高的限制,而低优先级的后台作业则不会挤占它们。
### 隔离人工流量与 AI 代理流量 (https://planetscale.com/blog/introducing-database-traffic-control#isolating-human-from-ai-agent-traffic)
随着 AI 驱动的功能向数据库发送越来越多的查询,流量控制让您可以设置护栏,确保自动化流量不会压垮支撑人机交互体验的查询。
### 多租户应用中优先保障付费等级 (https://planetscale.com/blog/introducing-database-traffic-control#prioritizing-paid-tiers-in-multi-tenant-apps)
如果您运行多租户应用,可以通过标签按客户或等级识别流量,并据此设定预算。即使在试用用户导致负载峰值时,企业客户也能得到保护。
## 开始使用 (https://planetscale.com/blog/introducing-database-traffic-control#getting-started)
流量控制现已在所有 PlanetScale PostgreSQL 数据库中可用。开始使用:
1. 在 PlanetScale 仪表盘 (https://app.planetscale.com/) 中导航到您的数据库
2. 打开 **Insights**,进入 **流量控制** 标签页
3. 通过选择要强制执行的标签和限制创建第一个预算(注意:可能需要重启数据库)
4. 先从**警告**模式开始,观察效果后再切换到**强制执行**
要充分利用流量控制,请将 sqlcommenter (https://planetscale.com/docs/postgres/traffic-control/concepts#tag-based-rules) 标签添加到应用程序的查询中。这为您提供了丰富的流量分类维度。
流量控制也通过 PlanetScale API 和 CLI 提供,因此您可以在部署管道中自动化预算创建。
## 观看实际操作 (https://planetscale.com/blog/introducing-database-traffic-control#see-it-in-action)
我们构建了一个演示工具,让您可以亲自尝试并观看效果。只需克隆 `onramp` (https://github.com/planetscale/onramp),然后运行 `onramp create` 即可自动生成模式、流量控制预算和规则。
您还可以在流量控制文档 (https://planetscale.com/docs/postgres/traffic-control) 中了解更多信息,阅读幕后深度解析 (https://planetscale.com/blog/behind-the-scenes-how-traffic-control-works),或跟随我们的详细功能教程:
流量控制为您的 PostgreSQL 数据库带来了前所未有的能力:自我保护。立即设置您的第一项预算,不再担心下一个试图拖垮数据库的查询。
相似文章
PgDog
PgDog 是一款无需修改应用程序即可扩展 PostgreSQL 的工具,提供连接池和负载均衡功能。
大规模并行 Postgres 备份
PlanetScale 描述了它如何通过为每个分片启动 EC2 实例、从对象存储恢复之前的备份并重放 WAL,来对分片 Postgres 数据库执行大规模并行备份,从而实现超过 50 GB/s 的 PB 级备份速度。
让Postgres队列实现可扩展性
一篇详细的技术博文,解释如何使用SKIP LOCKED和适当的事务隔离级别来扩展基于PostgreSQL的队列,实现每秒3万次工作流执行。
@_avichawla: Cloudflare如何在不离开Postgres的情况下将查询时间缩短35倍:他们的Postgres表达到数十亿行,而每次时间范围查询开始变慢。
Cloudflare使用TimescaleDB(Tiger Cloud)在数十亿行的Postgres表上将查询性能提升了35倍,并借助Claude Code和Tiger CLI构建了一个实时地震仪表板。
我们将PgBouncer扩展到4倍吞吐量
ClickHouse Managed Postgres通过运行一组使用SO_REUSEPORT的进程,将PgBouncer扩展到4倍吞吐量,实现了多核利用率,并通过对等连接解决了取消转发问题。