by mattrobenolt on 1/4/23, 4:40 PM with 47 comments
by kamikaz1k on 1/4/23, 8:48 PM
When I found it (you can thank Theo), shocked this isn't what AWS' serverless DB offering already was.
I agree with what the author mentioned in another comment, not dropping performance for non-serverless use cases is a decided win. I deeply appreciate the work being done to enable serverless applications, so thank you for the work and thank you for sharing your findings OP.
by erulabs on 1/4/23, 7:26 PM
I'm also curious about the comparison to the MySQL Classic protocol - would be interesting have an "as-close-as-possible" benchmark between Aurora MySQL "Serverless V2" and Planetscale. Even if it was as naive as "Given 100$ of credits, how many reads can you do at what average latency".
by dveeden2 on 1/4/23, 5:15 PM
https://dev.mysql.com/doc/dev/mysql-server/latest/page_mysql...
by muhammadusman on 1/4/23, 10:53 PM
The developer experience with PlanetScale has been my favorite so far, I use it with a few Next.js apps and the "scaling" part has been the easiest as I haven't had to think about a burst of traffic b/c PlanetScale handles it without me lifting a finger.
by uluyol on 1/5/23, 3:35 AM
There's a ton of work to optimize TCP including hardware offloads that help push higher throughput. Basically we're talking library + kernel + hardware changes. It might be possible to get some of these into QUIC, but since QUIC is most compelling for WAN traffic, there's probably not much incentive for that.
by alberth on 1/4/23, 10:00 PM
I feel like I live under a rock because I just don't get what's so great.
by avargas on 1/4/23, 7:37 PM
1) use persistent connections, let the OS handle them and tweak it to allow (both connecting server and mysql server). And never close the connection on the application side. (This could lead to potential deadlocks, but there are ways around it, like closing bad connections to clear thread info on mysql).
2) run the whole thing in a transaction, simply begin transaction or autocommit if allowed (same thing)
Doing so, when you are done rendering the content, flush it and send the correct signal to say nginx or apache to say it's done (like PHP's fastcgi_finish_request when working with FPM), and then run your commit. Obviously used when you can safely disregard failed inserts.
by YarickR2 on 1/4/23, 6:16 PM
by mgaunard on 1/4/23, 7:40 PM
So of course HTTP/2 will outperform, that's what it's designed to do.
Now try again, but use one connection per thread, and connect it before you start benchmarking, i.e. use it the way it's meant to be used.
by exabrial on 1/4/23, 11:33 PM
by kurtextrem on 1/4/23, 5:07 PM