Readyset Weekly: Issue 91
The Role of Connection Pooling in High-Throughput Applications
High-throughput systems usually fail not because queries are slow but because the database gets overwhelmed by connection churn. A good pool smooths spikes, reuses backends, and prevents short-lived sessions from destabilizing latency.
Here are a few practical tuning tips:
- Right-size your pools: Too few connections starve workers, and too many overwhelm the primary. Measure active backends at peak load and size the pool based on real concurrency, not framework defaults.
- Prefer transaction pooling for OLTP workloads: In Postgres, pgBouncer's transaction mode sharply reduces backend usage without affecting normal read/write semantics.
- Watch for idle-in-transaction states: Clients that hold open transactions block backend reuse and increase lock times. Enforce timeouts at the pooler and monitor
pg_stat_activityfor sessions stuck in idle-in-transaction. - Keep poolers close to the application: Running pgBouncer or ProxySQL near the app avoids extra TLS handshakes, authentication overhead, and unnecessary network round trips to the database.
- Split workloads across multiple pools: Use separate pools for writes, hot reads, background jobs, and long analytical queries so one workload cannot consume all available connections.
- Use server-side parameters to reduce churn: Lower
max_connectionson the database and let the pooler absorb concurrency, which keeps backend memory predictable and improves overall stability.
Connection pooling keeps your database from collapsing under connection churn. Once the system is stable at the connection layer, reducing read load becomes the real unlock, and Readyset delivers that by turning slow, high-frequency reads into fast, fresh cached results automatically.
🔍 What We're Watching in the Database Ecosystem
Europe is scaling back its landmark privacy and AI laws
The EU is moving to scale back and delay key parts of the AI Act and GDPR, easing data-sharing rules and relaxing requirements for high-risk AI systems in an effort to reduce regulatory friction. If enacted, these changes would reshape how AI systems are trained, governed, and deployed across Europe by shifting the balance between oversight and innovation.
Cloudflare outage on November 18, 2025
Cloudflare's postmortem explains how a ClickHouse permission change caused a metadata query to return duplicate rows, doubling the size of a Bot Management feature file and triggering failures across their proxy layer. The write-up shows how even small shifts in query behavior can ripple through automated systems without a layer that stabilizes query shapes and insulates downstream components from unexpected output changes.
Advancing the Lakehouse with Apache Iceberg v3 on Databricks
Databricks is adding native support for Apache Iceberg v3, bringing faster metadata operations, better table reliability, and deeper interoperability across engines. It's another step toward making the lakehouse behave more like a transactional database while still preserving open formats and engine-agnostic design.
In Case You Missed It
Going Beyond Traditional Database Functions with the New Bucket Function
This month we introduced Bucket, Readyset's first built-in function that does not exist in upstream databases. Bucket lets you group time-based data into fixed intervals and cache those aggregates in memory for instant reads. In an NYC Taxi demo with 134 million rows, the same query that took 20.46 seconds in PostgreSQL returned in 5.6 milliseconds through Readyset, nearly 365 times faster, while still staying fresh under heavy updates. Bucket gives you time-series style performance without adding new infrastructure, extending what your relational database can do with zero changes.
Get Readyset Weekly in your inbox
One email a week — what shipped, what we learned, and what is worth reading.