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 INSERTs o JOIN¿s?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top