Apologies for a slight tangent, but if you really need SQL's structure and you can't shard the data to avoid scaling issues, please let me know what kind of system you are running because it IMHO has to be pretty weird.

Even in these cases, there are always other potential options, for instance using query playback with a combination less frequent FS or blockstore layer provided snapshot functionality.

In practice, in my own experience, generally when people get an SQL based database to a huge size the often greater issue is that someone has a huge mess of bad application code relying completely on the current database configuration that is not time or cost-feasible to modify.