MySQL suporta visualizações materializadas?

MySQL suporta visualizações materializadas?
No mundo moderno, a velocidade é fundamental. Ao criar aplicativos e software com um banco de dados, precisamos de acesso rápido aos dados no tempo mais mínimo possível. Para isso, implementamos várias medidas de banco de dados, incluindo vistas materializadas.

No entanto, diferentemente do banco de dados PostGresql ou Oracle, o MySQL não suporta visões materializadas de forma nativa, o que pode ser uma enorme desvantagem. Isso, no entanto, não é motivo para parar de usar o MySQL porque é um ótimo banco de dados para os principais aplicativos.

Neste tutorial, discutiremos rapidamente o que são visões materializadas, como elas funcionam, instâncias em que são aplicáveis ​​e como implementar visualizações materializadas em MySQL.

OBSERVAÇÃO: Suponho que você tenha conhecimento básico do MySQL antes de mergulhar neste guia.

O que são visualizações materializadas?

Vistas materializadas são resultados pré-calculados de uma consulta armazenada em uma tabela. Ao contrário de uma visualização MySQL padrão, uma visualização materializada não é uma janela em uma tabela de banco de dados; Ele armazena dados reais.

Esses tipos de objetos são super úteis quando você precisa de acesso imediato aos dados, e uma consulta regular do MySQL levaria tempo para processar. Um bom exemplo são os casos com um grande conjunto de dados que requer muitos cálculos.

Como as vistas materializadas contêm dados reais, eles exigem refrescamento para refletir os valores atualizados da mesma consulta. O intervalo de atualização para uma visão materializada depende do conteúdo armazenado e da rapidez com que os dados estão mudando.

MySQL suporta visualizações materializadas?

A resposta simples é não. No MySQL, não há comando único que você possa executar para obter uma visão materializada. Por exemplo, você não pode digitar o comando abaixo e obter o que precisa:

MySQL> Crie uma visão materializada…

Felizmente, com alguns truques e ferramentas fornecidos nativamente pela MySQL, podemos implementar uma visão materializada semelhante a uma fornecida nativamente por PostgreSQL, Oracle e outros.

Como criar uma visão materializada em MySQL

Nesta seção, mostrarei uma maneira de implementar uma visão materializada em MySQL.

OBSERVAÇÃO: Embora este método de oficina ilustre uma maneira de criar uma visão materializada no MySQL, ele não será perfeito em todos os bancos de dados.

Suponha que tenhamos um esquema chamado (MV) que possui uma tabela chamada Info, usada para armazenar as informações de vendas, conforme mostrado nas consultas abaixo:

Criar esquema mv;
Use MV;
Crie informações da tabela (
id int a chave primária Auto_increment,
Seller_id Int,
_ date date,
quantidade int
);
Inserir em informações (Seller_id, _date, quantidade) valores (101, "2021-01-05", 200), (111, "2021-01-05", 600), (121, "2021-02-05", 1000);

Usando uma tabela de exemplo acima, podemos criar uma tabela materializada que armazena informações de uma consulta como a mostrada abaixo:

Selecione Seller_id, _date, Sum (quantidade * 12 * 8) como total_amount da informação onde _date < CURRENT_DATE ORDER BY seller_id;

A consulta pode não parecer eficaz, considerando o tamanho do banco de dados e as informações armazenadas na tabela acima porque serão processadas muito rapidamente. No entanto, em um grande banco de dados com muita informação, uma consulta como a acima pode levar algum tempo para processar.

Nesse caso, podemos criar uma visão materializada para armazenar as informações da consulta acima, permitindo -nos acessar as informações mais rapidamente, simplesmente selecionando -as da visualização além de usar a consulta bruta sempre.

Para criar uma visão materializada, podemos criar uma tabela com os resultados da consulta acima:

Crie tabela materializada_view (
Selecione Seller_id, _date, Sum (quantidade * 12 * 8) como total_amount da informação onde _date < CURRENT_DATE ORDER BY seller_id
);

Como atualizar uma visão materializada

Como você sabe agora, uma visão materializada contém dados reais; Não é um instantâneo de uma mesa.

Isso significa que, se a tabela principal for atualizada, os dados na tabela de exibição materializada precisarão refrescar.

Para atualizar uma visão materializada, podemos usar o procedimento mostrado abaixo:

Delimitador $$
Crie procedimento refresh_materialv (
Out dev int
)
COMEÇAR
Tabela truncada materializada_view;
Insira em materializado_view
Selecione Seller_id, _date, Sum (quantidade * 12 * 8) como total_amount
De informações
Onde _date selecione * de materializado_view;
+-----------+------------+--------------+
| Seller_id | _date | total_amount |
+-----------+------------+--------------+
| 101 | 2021-01-05 | 172800 |
+-----------+------------+--------------+

Em seguida, tente atualizar os dados armazenados na tabela principal como:

Inserir em informações (Seller_id, _date, quantidade) valores (101, "2021-01-05", 200), (111, "2021-01-05", 600), (121, "2021-02-05", 1000), ("131", "2021-01-05", 6000), ("141", "2021-01-05", 1400);

Por fim, tente atualizar os dados da tabela Materialized_view usando o procedimento que criamos acima.

Ligue para refresh_materialv (@dev);
Selecione * de materializado_view;

Isso exibe os valores na tabela de exibição materializada atualizada.

Conclusão

Este tutorial discutiu o que são visões materializadas, como elas funcionam e como você pode implementar um ao usar o MySQL. Considere praticar os conceitos ensinados neste tutorial para dominar trabalhando com vistas materializadas.