Beste Tweakers,
Inmiddels heb ik redelijk wat ervaring met PHP en MySQL maar nu loop ik tegen een dataset aan welke groter is dan waarmee ik ooit heb gewerkt.
Het betreft een simpele applicatie welke elke minuut de waarde van 16 sensoren uitleest en opslaat in de database. Dit zijn dus 16*60*24=23040 records welke er per dag bijkomen. Momenteel is dit opgeslagen in een MySQL database met de MyIsam storage engine.
De tabelopbouw is met onderstaand ontzettend simpel
Er worden in de betreffende tabel vooral inserts gedaan en af en toe haalt (onregelmatig, maar minder dan 100x per dag) een PHP script waarden op (simpele query, hoogstens wat optellen ed), goochelt er wat mee en maakt er een grafiek van. De enige join om om LEIDING_ID te koppelen aan een andere tabel met gegevens over die betreffende leiding.
De vraag: kunnen MySQL en MyISAM omgaan met zulke hoeveelheden records zonder al te traag te worden en dergelijke? De data dient enkele jaren bewaard te worden dus uiteindelijk zou ik tegen miljoenen records aanlopen.
Het probleem is niet dat MySQL evt meer dan 2 seconden over een query doet (hoewel dat natuurlijk mooier is om te vermijden) omdat de data niet vaak wordt opgevraagd en al helemaal niet tegelijkertijd door meerdere gebruikers.
Inmiddels heb ik redelijk wat ervaring met PHP en MySQL maar nu loop ik tegen een dataset aan welke groter is dan waarmee ik ooit heb gewerkt.
Het betreft een simpele applicatie welke elke minuut de waarde van 16 sensoren uitleest en opslaat in de database. Dit zijn dus 16*60*24=23040 records welke er per dag bijkomen. Momenteel is dit opgeslagen in een MySQL database met de MyIsam storage engine.
De tabelopbouw is met onderstaand ontzettend simpel
code:
1
2
3
4
5
6
7
| CREATE TABLE IF NOT EXISTS `standen_minuut` ( `TIMESTAMP` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `LEIDING_ID` tinyint(1) NOT NULL, `STAND` float NOT NULL, PRIMARY KEY (`TIMESTAMP`,`LEIDING_ID`), KEY `TIMESTAMP` (`TIMESTAMP`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
Er worden in de betreffende tabel vooral inserts gedaan en af en toe haalt (onregelmatig, maar minder dan 100x per dag) een PHP script waarden op (simpele query, hoogstens wat optellen ed), goochelt er wat mee en maakt er een grafiek van. De enige join om om LEIDING_ID te koppelen aan een andere tabel met gegevens over die betreffende leiding.
De vraag: kunnen MySQL en MyISAM omgaan met zulke hoeveelheden records zonder al te traag te worden en dergelijke? De data dient enkele jaren bewaard te worden dus uiteindelijk zou ik tegen miljoenen records aanlopen.
Het probleem is niet dat MySQL evt meer dan 2 seconden over een query doet (hoewel dat natuurlijk mooier is om te vermijden) omdat de data niet vaak wordt opgevraagd en al helemaal niet tegelijkertijd door meerdere gebruikers.