MySQL visualiza desempenho para fins de alias
-
29-09-2020 - |
Pergunta
Estou trabalhando em um projeto Rails e tenho um banco de dados legado, que é utilizado por outras aplicações, portanto sua estrutura não pode ser modificada.O problema é que os nomes das tabelas e colunas não seguem as convenções do Rails.Uma solução comum para isso é criar visualizações MySQL que apenas alias as colunas corretamente.
Estas são visões extremamente simples que apenas têm
SELECT old_column_1 AS new_column_1, old_column_2 AS new_column_2 FROM table_name;
Algumas tabelas são muito grandes, como 22 milhões de linhas (2GiB).Todas as tabelas são MYISAM
.Também há um MEMORY
tabela com 2 milhões de linhas (~350MiB)
A questão principal é quanto de sobrecarga eu obtenho com essas visualizações e se isso de alguma forma impacta ROW LOCK
ou TABLE LOCK
durante INSERT
ou JOIN
é?
Solução
YMMV.Visualizações às vezes não conseguem fazer as mesmas otimizações, levando a uma execução mais lenta do que realizar o SELECT
diretamente.Como o seu caso é simples, provavelmente você não sofrerá nenhuma sobrecarga perceptível.
INSERTs
através de um VIEW
têm limitações;parece que você não vai acertá-los.Leia o manual.
JOINs
é um local onde o otimizador pode deixar a bola cair;sugiro que você experimente isso off-line antes de se comprometer a fazer a alteração.