数据库流量控制
摘要
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 数据库带来了前所未有的能力:自我保护。立即设置您的第一项预算,不再担心下一个试图拖垮数据库的查询。
相似文章
使用 Postgres 作为作业队列的潜在后果
文章分析了使用 PostgreSQL 作为作业队列的可扩展性限制,特别强调了高并发下 MultiXact SLRU 争用导致的性能瓶颈。文章解释了为什么这种架构在开发环境中表现良好,但在生产环境中却会失败,并建议考虑替代方案。
PostgresBench: 一个可复现的 Postgres 服务基准测试
ClickHouse 发布了 PostgresBench,这是一个公开且可复现的基准测试,用于比较托管式 Postgres 服务,它使用标准的 pgbench 工具,在多个缩放因子下运行类似 TPC-B 的工作负载。
扩展PostgreSQL以支持8亿ChatGPT用户
OpenAI分享了扩展PostgreSQL以支持8亿ChatGPT用户及每秒数百万查询的技术见解,采用了单主架构搭配50个只读副本,同时通过分片和优化策略管理写入密集型工作负载带来的挑战。
@PlanetScale:数据库太慢?本地挂载 NVMe 存储带来无上限 IOPS,把数据中心级性能搬进云端……
PlanetScale 推出基于本地 NVMe 存储的高性能云托管方案,为 Vitess 与 Postgres 提供无上限 IOPS 与横向扩展能力。
PgDog 获得融资,即将登陆您的数据库
PgDog 是一个开源代理,使 Postgres 实现水平扩展,已从 Basis Set、YC 等机构获得 550 万美元融资。该工具已在生产环境中每秒处理超过 200 万次查询。