MySQL prend-il des vues matérialisées?

MySQL prend-il des vues matérialisées?
Dans le monde moderne, la vitesse est essentielle. Lors de la création d'applications et de logiciels avec une base de données, nous avons besoin d'un accès rapide aux données dans le temps le plus minimal possible. Pour cela, nous implémentons diverses mesures de base de données, y compris des vues matérialisées.

Cependant, contrairement à la base de données PostgreSQL ou Oracle, MySQL ne prend pas en charge les vues matérialisées nativement, ce qui peut être un énorme inconvénient. Cependant, cela n'est pas une raison pour arrêter d'utiliser MySQL car il s'agit d'une excellente base de données pour les principales applications.

Dans ce tutoriel, nous discuterons rapidement des vues matérialisées, comment elles fonctionnent, des cas où ils sont applicables et comment implémenter des vues matérialisées dans MySQL.

NOTE: Je suppose que vous avez des connaissances de base MySQL avant de plonger dans ce guide.

Quelles sont les vues matérialisées?

Les vues matérialisées sont les résultats pré-calculés d'une requête stockée dans un tableau. Contrairement à une vue MySQL standard, une vue matérialisée n'est pas une fenêtre dans une table de base de données; il stocke les données réelles.

Ces types d'objets sont super utiles lorsque vous avez besoin d'un accès immédiat aux données, et une requête MySQL ordinaire prendrait du temps pour traiter. Un bon exemple est les cas avec un grand ensemble de données qui nécessite beaucoup de calculs.

Étant donné que les vues matérialisées contiennent des données réelles, elles nécessitent une rafraîchissement pour refléter les valeurs mises à jour à partir de la même requête. L'intervalle de rafraîchissement pour une vue matérialisée dépend du contenu stocké et de la vitesse à laquelle les données changent.

MySQL prend-il des vues matérialisées?

La réponse simple est non. Dans MySQL, il n'y a pas de commande unique que vous pouvez exécuter pour obtenir une vue matérialisée. Par exemple, vous ne pouvez pas taper la commande ci-dessous et obtenir ce dont vous avez besoin:

MySQL> Créer une vue matérialisée…

Heureusement, avec quelques astuces et outils fournis nativement par MySQL, nous pouvons implémenter une vue matérialisée similaire à celle native fournie par PostgreSQL, Oracle et d'autres.

Comment créer une vue matérialisée dans MySQL

Dans cette section, je vais vous montrer un moyen d'implémenter une vue matérialisée dans MySQL.

NOTE: Bien que cette méthode d'atelier illustre un moyen de créer une vue matérialisée dans MySQL, elle ne sera pas parfaite sur toutes les bases de données.

Supposons que nous ayons un schéma appelé (MV) qui a un tableau appelé Info, utilisé pour stocker les informations de vente comme indiqué dans les requêtes ci-dessous:

Créer un schéma MV;
Utiliser MV;
Créer des informations sur la table (
id int key primaire auto_increment,
vendeur_id int,
_Date Date,
Montant int
));
Insérer dans les valeurs info (seller_id, _date, montant) (101, "2021-01-05", 200), (111, "2021-01-05", 600), (121, "2021-02-05", 1000);

À l'aide d'un exemple de tableau ci-dessus, nous pouvons créer un tableau matérialisé qui stocke les informations d'une requête telle que celle ci-dessous:

Sélectionnez Seller_id, _date, somme (montant * 12 * 8) comme total_amount à partir d'informations où _date < CURRENT_DATE ORDER BY seller_id;

La requête peut ne pas sembler efficace, compte tenu de la taille de la base de données et des informations stockées dans le tableau ci-dessus car il sera traité très rapidement. Cependant, sur une grande base de données avec beaucoup d'informations, une question comme celle ci-dessus pourrait prendre un certain temps pour traiter.

Dans un tel cas, nous pouvons créer une vue matérialisée pour stocker les informations à partir de la requête ci-dessus, nous permettant d'accéder plus rapidement aux informations en les sélectionnant simplement dans la vue autre que l'utilisation de la requête brute à chaque fois.

Pour créer une vue matérialisée, nous pouvons créer une table avec les résultats de la requête ci-dessus:

Créer une table matérialisée_view (
Sélectionnez Seller_id, _date, somme (montant * 12 * 8) comme total_amount à partir d'informations où _date < CURRENT_DATE ORDER BY seller_id
));

Comment actualiser une vue matérialisée

Comme vous le savez maintenant, une vue matérialisée contient des données réelles; Ce n'est pas un instantané d'une table.

Cela signifie que si le tableau principal est mis à jour, les données du tableau de vue matérialisé devront rafraîchir.

Pour actualiser une vue matérialisée, nous pouvons utiliser la procédure ci-dessous:

Délimiteur $$
Créer la procédure Refresh_Materialv (
Out dev int
)
COMMENCER
TRUNCATE TABLE MATEMATINED_VIEW;
Insérer dans matérialisé_view
Sélectionnez Seller_id, _date, somme (montant * 12 * 8) comme total_amount
Des informations
Où _date select * from Materialized_view;
+-----------+------------+--------------+
| Seller_id | _Date | Total_amount |
+-----------+------------+--------------+
| 101 | 2021-01-05 | 172800 |
+-----------+------------+--------------+

Ensuite, essayez de mettre à jour les données stockées dans le tableau principal en tant que:

Insérer dans les valeurs info (seller_id, _date, montant) (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);

Enfin, essayez de mettre à jour les données de la table matérialisé_view en utilisant la procédure que nous avons créée ci-dessus.

Appelez Refresh_Materialv (@DEV);
SELECT * FROM MATRIMISE_VIEW;

Cela affiche les valeurs de la table de vue matérialisée mise à jour.

Conclusion

Ce tutoriel a discuté des points de vue matérialisés, de la façon dont ils fonctionnent et de la façon dont vous pouvez implémenter un lorsque vous utilisez MySQL. Envisagez de pratiquer les concepts enseignés dans ce tutoriel pour maîtriser le travail avec des vues matérialisées.