Let's say you have an account table in a single database containing user accounts, now after all the optimizations you've done, it's still taking strain.
Now we take users from US and place them in a separate account table on a seperate database and users from ZA into a separate account table on another database and you have some sort of router / loadbalancer reading / writing / updating rows in their relevant databases.
See this article from Percona: percona.com/blog/2015/03/19/choosing-a-good-shard…