Beste Joris, ik heb/had dezelfde issues met de performantie
. Ik log zelfs elke minuut in een MYSQL, en nu 1.5 jaar lang al.
Ik gebruik dan Weatherlink voor de tags, maar dat maakt niet uit. Een scriptje leest steeds de tags uit en indien de tijd met 1 minuut is versprongen gaat deze in de database.
Aan de client-zijde op de website genereer ik dagrapportjes en later ook maandrapportjes. Echter in de dagrapportjes liep ik al vast. Althans, het hield niet over (3 tot 4 sec per dag). In dat rapportje staat een tabel van 24 uren met elk uur gemiddelde temperatuur, wind, etc (alle belangrijke gegevens). Zoals aangegeven zul je inderdaad gebruik moeten gaan maken van de juiste query's (select max(temperatuur) bla bla). Maar soms gaat dat niet. Voorbeeld: maximale uurgemiddelde wind...? Dan moet je dus steeds over een uur middelen en zo door heel de dag schuiven en daarvan de max nemen. Dat zijn serieuze bewerkingen. Zo heb ik ook een algoritme om de duur van de neerslag te bepalen etc. Maar ook worden de timestamps van de bijbehorende webcambeeldjes in de database bepaald.
Mijn oplossing: ik heb een extra tabel gemaakt naast de hoofdtabel. In dat tabel staan per uur de belangrijke gegevens van dat uur. Bijvoorbeeld totaal neerslag, maximale 10 minuten gemiddelde wind, en zo 15 kolommen met wat je zoal nodig hebt om daggegevens (of maandgegevens) te maken. Door deze gegevens te gebruiken, gaat de verwerking plots heel snel
.
De tabel wordt als het volgt aangemaakt. Steeds als iemand op mijn website kijkt naar de samenvatting van de dag checkt het script wat de meest recente uurlijkse samenvattingen is. Stel als 3 uur niemand op de website gekeken heeft, dan moet hij dus 3 uursamenvattingen maken. De ontbrekende getallen vult hij dan in, waarna op de site de gegevens worden getoond. Op die manier houdt de hulpdatabase zichzelf bij. Het laatste uur overschrijft hij altijd omdat in het lopende uur natuurlijk de gemiddelden steeds meelopen.
Ik moet alleen nog even een taak aanmaken op de server dat hij toch elke dag even een check doet, zodat niet als er 3 dagen niemand kijkt hij dus 20 seconden moet pruttelen om de 3x 24 uren te berekenen
.
Ik heb het zo gemaakt dat je de tabel altijd kunt legen (bijvoorbeeld als bij voortschrijdend inzicht blijkt dat een variabele mist of verkeerd is berekend), en handmatig door het script uit te voeren de hele historie van 1.5 jaar uurlijkse samenvattingen weer opnieuw wordt opgebouwd. Staat de pc wel lekker een uur te ploeteren, maar het is zeer tof om dan te zien dat je een volledig kloppende hulptabel krijgt uit je eigen programmeersels
.
Als je meer wilt weten, laat maar even weten.