Bonjour,
L'application que je développe actuellement permet la visualisation de consommation d'énergie. La base de donnée MySQL est donc essentiellement utilisée pour gérer une table d'historisation des index des compteurs d'énergie.
La relève se fait toute les 10 minutes, donc toutes les 10 minutes, la table reçoit n lignes, n étant le nombre de compteurs du client.
La table d'historisation a le modèle suivant :
C'est à dire l'identifiant du compteur, la date de la mesure, la valeur de l'index. La date est un bigint car je préfère la gérer en millisecondes, je trouve ça plus pratique (peut être est-ce une erreur ?).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE `history` ( `id` int(11) NOT NULL AUTO_INCREMENT, `idmeter` int(11) NOT NULL, `date` bigint(30) NOT NULL, `value` bigint(30) NOT NULL, PRIMARY KEY (`id`), KEY `date` (`date`) )
C'est table n'est pas énorme car pour 1,5 millions d'entrée elle fait un peu plus de 100Mo.
Néanmoins, les temps d'accès ne sont pas terribles, jusqu'à 10 secondes lorsque l'utilisateur sélectionne la visualisation des consommations sur toute une année jour par jour pour 1 compteur.
A noter que pour réaliser la vue, je vais chercher chaque donnée séparément, soit un select par entrée dans la table d'historisation.
Pour une année par jour, cela donne 365+1 select
Est-ce normal d'avoir ce genre de temps de réponse ?
Ai-je tout faux dans mes choix de structure, d'utilisation de ma table ?
Y-a-t-il des stratégies bien particulière pour gérer ce genre d'application ?
Pour infos, la machine local sur laquelle j'obtiens ces résultats a un double CPU 1.8GHz et 2Go de Ram. J'aimerais faire tourner cette appli sur un kimsufi L si possible.
Merci d'avance pour vos conseils.
Partager