¿En qué momento una base de datos MySQL comienza a perder rendimiento?
- ¿Importa el tamaño de la base de datos física?
- ¿Importa el número de registros?
- ¿La degradación del rendimiento es lineal o exponencial?
Tengo lo que creo que es una gran base de datos, con aproximadamente 15 millones de registros que ocupan casi 2 GB. En base a estos números, ¿hay algún incentivo para que limpie los datos, o puedo permitir que siga escalando durante algunos años más?
Solución del problema
Actualmente administro una base de datos MySQL en la infraestructura en la nube de Amazon que ha crecido a 160 GB. El rendimiento de la consulta está bien. Lo que se ha convertido en una pesadilla son las copias de seguridad, las restauraciones, la adición de esclavos o cualquier otra cosa que se ocupe de todo el conjunto de datos, o incluso DDL en tablas grandes. Obtener una importación limpia de un archivo de volcado se ha vuelto problemático. Para que el proceso fuera lo suficientemente estable como para automatizarse, era necesario tomar varias decisiones para priorizar la estabilidad sobre el rendimiento. Si alguna vez tuviéramos que recuperarnos de un desastre utilizando una copia de seguridad de SQL, estaríamos inactivos durante días.
El escalado horizontal de SQL también es bastante doloroso y, en la mayoría de los casos, conduce a usarlo de formas que probablemente no pretendías cuando elegiste poner tus datos en SQL en primer lugar. Fragmentos, esclavos de lectura, multimaestro, etc., todas son soluciones realmente malas que agregan complejidad a todo lo que haces con la base de datos, y ninguna de ellas resuelve el problema; solo lo mitiga de alguna manera. Sugeriría encarecidamente que busque sacar algunos de sus datos de MySQL (o realmente de cualquier SQL) cuando comience a acercarse a un conjunto de datos de un tamaño en el que este tipo de cosas se conviertan en un problema.
Update: a few years later, and our dataset has grown to about 800 GiB. In addition, we have a single table which is 200+ GiB and a few others in the 50-100 GiB range. Everything I said before holds. It still performs just fine, but the problems of running full dataset operations have become worse.
No hay comentarios.:
Publicar un comentario