Hacker News new | ask | show | jobs
by mdasen 1571 days ago
This is a nice change. It looks like it used to be $15/mo per 100 Million rows read, $15/mo per 10 Million rows written. Now it's $1 per billion reads and $1.50 per 1 million writes. So the write pricing hasn't changed, but the read pricing has gone from $150 per billion to $1 per billion (a reduction of 99.3%). $1 would have gotten me 6.7M reads before the change and now a billion reads (150x more reads for your dollar). That's a huge pricing change!

I'm guessing the "difficult to understand and hard for you to predict" is around how the read pricing is based on how many rows MySQL needs to read in order to serve your query. That's going to depend on how the query optimizer executes your query (and what indexes you've made and such).

It does make me wonder if I'm allowed to create as many indexes as I want without incurring additional "writes". Their billing page makes it seem like indexes don't count: https://docs.planetscale.com/concepts/billing. In fact, their storage language makes it seem like indexes aren't charged for storage: "Data saved in the form of tables, columns, rows, and their corresponding relationships." I'm guessing that's just an oversight and the thinking is that "tables" covers indexes, but wouldn't "tables" also cover "columns, rows, and their corresponding relationships?" Given the expensive storage at $2.50/GB, how big things are seems to matter. Cockroach charges $1/GB (60% less), Google charges $0.34/GB for Cloud SQL HA storage, and $0.33/GB for Cloud Spanner storage (and 2-3x that if you're going multi-region). $2.50 is a big premium.

It still seems like there's an incentive to over-index rather than doing small filtering in-memory, though the incentive is now 99% smaller. Likewise, there seems to be no charge for doing something that requires sorting - or maybe they consider the sort to be a re-read of all the results? Looking over MySQL's explain analyze results, it looks like there shouldn't be a cost for reading through the index.

Sorry for the random thoughts. PlanetScale is a great project to offer a serverless MySQL on top of Vitess. I wish Vitess existed for PostgreSQL (we use Postgres' GIN indexes with JSON so it's not easy to move to MySQL).

2 comments

Thank you for your thoughts. We are continuing to iterate. Pricing in the serverless world is a new craft and there is lots to improve on. We were very excited to see other companies follow suit with serverless pricing models after our launch.

A lot went into making this iteration on our pricing. We spoke to customers, we reviewed all of our billing to make sure that this would save money for nearly all of our customers (the bill has increased for 2 customers because they have very unique workloads, we are providing them discounts to mitigate).

One thing to mention is that our storage includes replication of the data. We never want customers to worry about how many copies to keep to achieve HA so we do that for them and that is represented in this price.

We are continuing to optimize with the customer in mind and I am sure there will be further iterations. Stay tuned!

GP had direct questions which you did not answer.
If that's true, that will be similar to firestore when using limits and offsets. I really hate asymmetric pricing like this that forces developers to think in non standard way to reduce expenses. There is enough complexity as is in software development without more gotchas in billing.
You're almost always being charged for the resources you use, the gotcha is that they aren't free