Hay dos temas que podrías ver para resolver estas dudas, Partitioning de tablas y Cluster de servidores de base de datos, en resumen:
Las particiones de tablas sirven para almacenar los datos de una misma tabla en diferentes segmentos físicos donde cada segmento puede estar en distintas ubicaciones (discos del servidor), por ejemplo, si tienes una tabla de facturación con un campo fecha_factura, la puedes particionar por este campo con el método por rangos.
Código:
CREATE TABLE facturas (
id INT NOT NULL,
fecha_factura DATE NOT NULL
)
PARTITION BY RANGE ( YEAR(fecha_factura) ) (
PARTITION p1 VALUES LESS THAN (2010),
PARTITION p2 VALUES LESS THAN (2011),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
Esto tiene varias ventajas, por un lado el costo, al permitir distribuir el almacenamiento a nivel de partición, si un servidor tiene un grupo de discos rápidos (generalmente más caros) y otro grupo de discos lentos, puedes poner las particiones de mayor acceso en los discos rápidos y las de menor acceso en los discos lentos, de esta manera optimizas el costo de almacenamiento. Por otro lado el rendimiento, supongamos que quieres obtener todas las facturas del año 2011 con la consulta SELECT * FROM facturas WHERE YEAR(fecha_factura) >= 2011, en este caso, el motor entiende que la partición p3 tiene todos los datos, por lo que hace un recorrido (FULL SCAN) solo de esa partición y no de toda la tabla. Más info en [url]http://dev.mysql.com/doc/refman/5.6/en/partitioning.html[/url]
El otro tema es Cluster de servidores, esto te permite tener varios servidores donde cada uno de ellos tiene una copia completa de la base de datos, esto es útil para:
Balanceo de carga, es decir, distribuir las peticiones de los usuarios entre los equipos que componen el cluster (en el caso de modificación de datos existe un proceso de sincronización), a veces tener un solo servidor gigante es más caro que varios pequeños, o si la demanda de hardware crece, puede ser más barato agregar un servidor nuevo al cluster que comprar disco, memoria, procesadores, etc para potenciar el servidor existente.
Protección ante fallos, si tienes un único servidor y tiene un fallo es posible que se de una interrupción del servicio. Dentro de un cluster, si un servidor cae, los demás siguen funcionando con normalidad, además si después el servidor vuelve a estár activo, el proceso de sincronización actualizará cualquier dato faltante.
Más info en [url]http://www.mysql.com/products/cluster/architecture.html[/url]
En cualquier caso, esto es solo informativo, como bien te comentaron, si vas a contratar un hosting, toda esta gestión es problema del proveedor del servicio.
Saludos