@steipete@neondatabase Hmm. Am I misreading the queryFn that runs as a warmup? The postgres.js dialect is definitely configured to use a connection pool here so all subsequent requests will use that pool. I don't see any code that explicitly closes the connections after each query
@steipete@neondatabase Why the query times would be so different I don't know. Looking at the kysely-neon adaptor it is a little strange to me. It's possible it is testing with HTTP and not websockets. It might be a "fairer" test if you can set the `poolQueryViaFetch: false` ๐
@steipete@neondatabase It's always important to understand what a benchmark is actually measuring. Benchmarks can be very misleading sometimes!
It does look like your benchmark is testing query times, rather than connection establishment times, which can be quite significant!
@steipete@neondatabase Often they are, and that is where we've measure HTTP having better performance historically, but sometimes queries are more involved and might need transactions.
Some serverless environments don't tear down the runtime immediately, so having full connections can speed things up
@steipete@neondatabase Additionally, that blog post is referring to the Websocket functionality of the serverless driver. But your screenshot is claiming to compare with our HTTP driver. For repeated queries we do recommend using websockets as they will have less overhead in the long run
@steipete@neondatabase Can you share your benchmark code? ๐
The blog post claims faster "connections", ie how long until you can get the first query result. Your screenshot is vague on what is being measured with "Querying execution times".
Iโm excited to share a major milestone: Neon is joining forces with @databricks.
https://t.co/QZPfL5SDsT
Together, we will build the best Postgres experience in the world and one of the most important pieces of the modern AI-native stack.
Day 1 again for @neondatabase
@jonkkillian@rauchg@neondatabase@databricks@v0 As G says, it's complicated. S3 is the source of truth given how affordable and durable it has proven to be, but we have plenty of intermediate cache layers because S3 is far too slow. API calls to S3 are expensive so we try to batch and cache aggressively.
๐ข Our 2025 Rust Nation UK workshops are ready for you!
Weโve lined up a range of sessions for every skill levelโintermediate, expert, and ASYNC workshops led by industry leaders from @ardanlabs, @mainmatter, and @ConradLudgate.
Join us for a full day of learning and hands-on experience. Check out the full agenda and secure your spot: https://t.co/gL0lvYEO0Z
#rustnationuk25 #rustworkshops #rustlang
@stevewillcock@_filtra I'm going to make a new set of videos going into more depth soon, covering what I did during my eurorust workshop a few months ago :)
@gregavola@DrizzleORM@supabase@Cloudflare Most ORMs are designed with the raw SQL in mind, which makes the adaptors simpler to implement. I imagine it's awkward to implement drizzle->postgREST adaptor. supabase direct connections via pg will work here too, but as you pointed out that only works if TCP is available
@gregavola@DrizzleORM@supabase@Cloudflare Neon built a custom "SQL over HTTP" layer, whereas supabase uses the PostgREST system. They have similarities in that they send a HTTP query to a backend, which then manages the postgres connection. SQL over HTTP is raw sql, whereas postgREST is a full query translation layer.
Ever wondered how Neon's autoscaling actually works?
Check out this technical deep dive which covers how we make Postgres on Neon adapt to your workload โ