- PlanetScale ra mắt Database Traffic Control cho Postgres — hệ thống budget tài nguyên theo thời gian thực, chặn query xấu trước khi nó chạy thay vì để timeout đốt CPU.
- Rule lan tới mọi replica trong 1-2 giây.
TL;DR
PlanetScale vừa ra mắt Database Traffic Control cho Postgres (23/03/2026) — một traffic management system cho phép bạn đặt budget tài nguyên trên từng nhóm query và Postgres sẽ tự enforce. Một query rogue không còn đủ sức đánh sập cả database. Rule mới lan tới mọi replica trong 1-2 giây, hoạt động ngay cả khi server đang ở 100% CPU.
What's new
Postgres có một lỗ hổng cố hữu: nó nhận mọi query bạn gửi tới, không phân biệt query từ checkout của khách hàng VIP hay từ một background job đang chạy lệch. Khi traffic spike bất thường, performance degrade — tệ nhất là server đi luôn. statement_timeout chỉ kill sau khi query đã ngốn tài nguyên. Linux cgroups thì khởi chạy mọi task rồi mới starve.
Traffic Control đảo ngược câu chuyện: chặn query trước khi nó bắt đầu execute. Bạn định nghĩa "budget" — một slice tài nguyên — và gắn rule để cho biết query nào thuộc budget đó. Khi budget cạn, query bị warn (mode quan sát) hoặc block (mode enforce, trả về SQLSTATE 53000).
Why it matters
Sam Lambert (CEO PlanetScale) tóm gọn trong launch post: "Instead of total collapse, you define which workloads are allowed to be shed under pressure and which should have higher limits." Đây là khác biệt giữa graceful degradation và site-wide outage.
Trong incident response, bạn vào Insights, tìm fingerprint của query đang đốt CPU, click tạo budget — vài giây sau query đó bị throttle, database thở lại, team có thời gian fix gốc. Không còn cảnh phải SSH vào DB pkill một process đang chạy.
Technical facts
- Backbone: built trên extension
pginsights, hook vàoExecutorRunvàProcessUtility— thấy query trước khi nó chạy và sau khi xong. - Match dimensions: query pattern (fingerprint), application_name, Postgres user, IP/CIDR, custom tags qua sqlcommenter SQL comments (feature, priority, region, tier...).
- Resource caps mỗi budget: server share (CPU %), burst capacity, per-query execution time, query concurrency.
- Cơ chế leaky bucket ngược: mỗi query tích "debt" vào bucket. Bucket overflow ⇒ block. Debt drain theo thời gian. Size = burst limit, drain rate = long-term server share.
- O(1) rule evaluation: rule set là lookup table
<key,value>— chỉ ~3 lookups mỗi query, bất kể bạn config bao nhiêu rule. - Cost estimation: hash table per host, map mỗi query pattern → 2 exponential moving averages (CPU time thực + planner cost estimate). Hằng số
k= ratio của 2 average — tự cập nhật khi workload thay đổi. - Rule propagation 1-2 giây: rule lưu JSON vào
traffic_control.rules/traffic_control.budgetstrongpostgresql.conf, không cần restart, không cần SQL connection (nên hoạt động ngay khi DB đã 100% CPU).
Comparison
| Cơ chế | Khi nào chặn | Tài nguyên đốt | Granularity |
|---|---|---|---|
statement_timeout | Sau khi vượt N giây | Cao — query đã chạy | Per-role / global |
| Linux cgroups | Sau khi task start | Trung bình — bị starve | Per-process |
pg_strict | Pre-execution | Thấp | Theo query shape (allow/deny) |
| Traffic Control | Pre-execution | Gần bằng 0 | Theo budget tài nguyên |
Lưu ý: Traffic Control không phải WAF, không thay thế rate limit ở app layer, không phải cross-cluster limiter, và không thay cho indexing tốt. Nó là tầng phòng thủ cuối ngay trước Postgres executor.
Use cases
- Incident response: rogue query đốt CPU → tìm fingerprint trong Insights → tạo budget → ổn định trong vài giây.
- Priority shaping: tag query
priority=high|medium|low. Auth + checkout có headroom, background jobs bị giới hạn. - Cô lập AI agent: agent workload (RAG queries, autonomous SQL) tách riêng budget — không drown out traffic của user thật.
- Bảo vệ paid tiers: tag
tier='free'|'pro'|'enterprise'. Free user chạy dashboard nặng → budget shed trước khi touch enterprise workload. - Safe deploy với feature flag: set env var
DEPLOYMENT_TAG=new_checkout_v2trên pod mới. Budget chofeature='new_checkout_v2'ở Warn mode từ ngày đầu — bạn thấy đúng blast radius trước khi nó thành incident, sau đó switch Enforce làm safety net. - Background workers: connection pool riêng với
application_name='background-jobs', max 4 connection, budget conservative — job lệch cũng không crowd out user traffic.
Limitations & pricing
Có sẵn cho mọi PlanetScale Postgres database ngay hôm nay. PlanetScale Postgres plan từ $5/tháng. Hiện chưa hỗ trợ MySQL trong tài liệu launch.
App của bạn cần handle SQLSTATE 53000 tử tế: với non-critical workload (analytics, reporting) trả 503 + cached result; với critical path retry với backoff ngắn. Đây chính là controlled failure mode mà Traffic Control thiết kế tạo ra — bạn quyết định query nào fail thay vì để Postgres random hoá.
Budget là limit chứ không phải guarantee — không phân bổ tài nguyên cho query, chỉ giới hạn. Nếu DB underprovisioned thì rule không cứu nổi, bạn vẫn phải scale up.
What's next
Trong 1 tuần sau launch PlanetScale đã ship 2 update lớn:
- 27/03/2026: command
pscale traffic-controltrên CLI — quản lý budget/rule như infra-as-code, đút thẳng vào pipeline deploy. - 30/03/2026: warning thresholds — Enforce budget có thể emit warning ở % của burst/per-query/concurrency trước khi thực sự block. Giúp bạn cảnh báo trước khi traffic chạm trần.
Roadmap xa hơn chưa được công bố, nhưng pattern shipping cadence (3 update lớn trong 7 ngày) cho thấy đây là feature đang được PlanetScale push mạnh.
Nguồn: PlanetScale blog, Behind the scenes deep-dive, Patterns for Postgres Traffic Control, Docs.
