Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment implémenter la vue matérialisée avec MySQL ?

Je maintiens un projet appelé Flexviews (http://github.com/greenlion/swanhart-tools ) qui ajoute des vues matérialisées actualisables de manière incrémentielle à MySQL (ou actualisation rapide), même pour les vues qui utilisent les jointures et l'agrégation. Je travaille sur ce projet depuis trois ans. Il comprend un utilitaire de capture de données modifiées pour lire les journaux de la base de données. Aucun déclencheur n'est utilisé.

Il comprend deux méthodes d'actualisation. La première est similaire à votre méthode, sauf qu'une nouvelle version est construite, puis RENAME TABLE est utilisé pour échanger la nouvelle avec l'ancienne. À aucun moment la vue n'est indisponible pour l'interrogation, mais 2x l'espace est utilisé pendant une courte période.

La deuxième méthode est une véritable "actualisation rapide", elle prend même en charge l'agrégation et les jointures.

Il existe un article de blog à ce sujet :http://www.mysqlperformanceblog.com/2011/04/04/flexviews-part-3-improving-query-performance-using-materialized-views/

Flexviews est nettement plus avancé que l'exemple FromDual référencé par astander.