Bonjour à tous.
Je travail sur un projet qui est responsable de récupérer des valeurs de capteurs pour des stations. Je peux avoir jusqu'à 32 capteurs par station et actuellement nous disposons de 20 stations et cela augmentet toujours. Les données doivent être organisées/classées par Date et par Station.
Ce matin après un COUNT sur ma table j'ai obtenu : 4 687 271 valeurs. Et croyez moi juste faire un COUNT c'est long !
Encore pour cette table :
- Data length : 201.8 MB
- Index length : 323.1 MB
Déjà près de 5 milions et cela pour un an alors j'imagine que dans 2-3 ans ce sera énorme !
J'utilise le moteur InnoDB car dans certains cas j'ai besion d'utiliser les transactions.
En passant, j'utilise la version MySQL v5.0.
Voilà la définition de ma table :
Je dois souvent parcourir cette table pour sortir des moyennes pour une station et un mois précis. Ça peut prendre jusqu'à 1 à 2 minutes avant de sortir les valeurs... c'est malheureusement TROP LENT pour mon client.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE `StationsSensorsValues` ( `ssv_DateEntry` datetime NOT NULL default '0000-00-00 00:00:00', `ssv_StationID` int(11) NOT NULL default '0', `ssv_SensorID` int(11) NOT NULL default '0', `ssv_Value` float NOT NULL default '0', PRIMARY KEY (`ssv_DateEntry`,`ssv_StationID`,`ssv_SensorID`), KEY `ssv_DateEntry_StationID_IDX` (`ssv_DateEntry`,`ssv_StationID`), KEY `ssv_StationID` (`ssv_StationID`), KEY `ssv_SensorID` (`ssv_SensorID`), CONSTRAINT `stationssensorsvalues_ibfk_1` FOREIGN KEY (`ssv_StationID`) REFERENCES `stations` (`s_ID`), CONSTRAINT `stationssensorsvalues_ibfk_2` FOREIGN KEY (`ssv_SensorID`) REFERENCES `sensors` (`s_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Est-ce que ma table est mal définit ou simplement que j'arrive aux limites de MySQL ou voir même d'une base de données tout simplement ? Si j'ai atteins les limites alors serait-il mieux de gérer tout cela avec un arborescence de fichires sur disque dur (classé par station/année/mois) ?
Merci beaucoup pour vos précieux conseils.
Partager