MySQL ve el rendimiento con fines de alias
-
29-09-2020 - |
Pregunta
Estoy trabajando en un proyecto Rails y tengo una base de datos heredada que utilizan otras aplicaciones, por lo que su estructura no se puede modificar.El problema es que los nombres de tablas y columnas no siguen las convenciones de Rails.Una solución común para esto es crear vistas de MySQL que simplemente establezcan un alias adecuado para las columnas.
Estas son vistas muy simples que simplemente tienen
SELECT old_column_1 AS new_column_1, old_column_2 AS new_column_2 FROM table_name;
Algunas tablas son realmente grandes, como 22 millones de filas (2GiB).Todas las mesas son MYISAM
.También hay uno MEMORY
tabla con 2 millones de filas (~350MiB)
La pregunta clave es ¿cuánto gasto general obtengo con tales vistas y si esto impacta de alguna manera? ROW LOCK
o TABLE LOCK
durante INSERT
s o JOIN
¿s?
Solución
YMMV.Puntos de vista a veces no se realizan las mismas optimizaciones, lo que lleva a una ejecución más lenta que realizar la SELECT
directamente.Dado que su caso es sencillo, probablemente no incurrirá en gastos generales notables.
INSERTs
a través de un VIEW
tener limitaciones;Parece que no los golpearás.Lea el manual.
JOINs
es un lugar donde el optimizador puede dejar caer la pelota;Le sugerimos que experimente sin conexión con eso, antes de comprometerse a realizar el cambio.