sql >> Database >  >> RDS >> Mysql

Geaggregeerde gegevenstabellen

Deze functionaliteit wordt het best bediend door een functie genaamd gematerialiseerde weergave , die MySQL helaas mist. U kunt overwegen om te migreren naar een ander databasesysteem, zoals PostgreSQL.

Er zijn manieren om gematerialiseerde weergaven in MySQL te emuleren met behulp van opgeslagen procedures, triggers en gebeurtenissen. U maakt een opgeslagen procedure die de geaggregeerde gegevens bijwerkt. Als de geaggregeerde gegevens op elke invoeging moeten worden bijgewerkt, kunt u een trigger definiëren om de procedure aan te roepen. Als de gegevens om de paar uur moeten worden bijgewerkt, kunt u een MySQL-plannergebeurtenis of een cron-job om het te doen.

Er is een gecombineerde aanpak, vergelijkbaar met uw optie 3, die niet afhankelijk is van de data van de invoergegevens; stel je voor wat er zou gebeuren als nieuwe gegevens een moment te laat arriveren en niet in de aggregatie terechtkomen. (Misschien heb je dit probleem niet, ik weet het niet.) Je zou een trigger kunnen definiëren die nieuwe gegevens invoegt in een "achterstand", en de procedure alleen de aggregatietabel laten bijwerken vanuit de achterstand.

Al deze methoden worden in detail beschreven in dit artikel:http://www.fromdual.com/ mysql-materialized-views




  1. Hoe gegevens in MySQL in te voegen met een automatisch verhoogde primaire sleutel?

  2. Hoe u uw ProxySQL kunt bewaken met Prometheus en ClusterControl

  3. Hoe make_timestamptz() werkt in PostgreSQL

  4. Tabelruimte SYSMGMTDATA zit VOL in Grid Infrastructure Management Repository (MGMTDB)