Design Considerations for High-Throughput Cloud-Native RDBMS [pdf]
allthingsdistributed.com
allthingsdistributed.com
What do you mean by this?
These solutions offered a way to alter the table without using all the disk space available on the instance. Thus bypassing the storage issue.
The big reason that DDL is slow is because these systems haven't tried to make it fast.
This is, of course, a contary opinion so hear me out before judging me ;)
My thinking is thus:
There are lots of virtual storage engines in the mysql world such as 'federated' and 'spider' and 'union' and such. These actually abstract away more than one data-source, and often the engine is smart enough to support when the data sources don't have identical schema.
These virtual storage engines demonstrate that a layer of abstraction can cope with casting queries across more than one non-identical tables.
So, either built in or as a storage engine abstraction, databases _could_ support DDL changes by putting rows with each version of the schema into actually different tables, and casting queries across them etc transparently.
Another approach is that taken by the postgres engine, where each row has a version and some DDL such as add column with default null can be done instantly. (With a bit more thought, even defaults could have been coped with instantly; its a shame they weren't.)
So, blame the DB designers!
Within Amazon's Aurora and RDS product families (https://aws.amazon.com/rds/), there are
* Amazon Aurora MySQL
* Amazon Aurora PostgeSQL
* Amazon Aurora Serverless
* Amazon RDS for MySQL
* Amazon RDS for MariaDB
* Amazon RDS for Oracle
* Amazon RDS for SQL Server
plus the variations in different versions (e.g. Amazon RDS for MySQL supports 5.5, 5.6, 5.7, and 8.0).
Without knowing that it's hard to understand how you solved your problem. E.G. If you switced from Aurora MySQL to RDS for MySQL i expect you'd still need to use a tool like pt-osc and copy your tables.
Thanks!
https://aws.amazon.com/blogs/database/amazon-aurora-under-th...
https://aws.amazon.com/blogs/database/amazon-aurora-under-th...
https://aws.amazon.com/blogs/database/amazon-aurora-under-th...
https://aws.amazon.com/blogs/database/amazon-aurora-under-th...
From the docs, the largest instance size defaults to the recommend maximum of 6,000 connections (16k maximum) per server (and only one write-based sever and 15 read replicas) https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide...
> Amazon Aurora for MySQL comes with internal server connection pooling and thread multiplexing, which helps reduce contention and improve scalability when dealing with thousands of concurrent connections. You can configure each Aurora DB instance to allow up to 16,000 concurrent connections.
https://aws.amazon.com/blogs/database/planning-and-optimizin...
Most of the connections were idle too.
Any pooling they are doing is not very effective.
The product is pretty disappointing.