Bonjour tout le monde et merci de m'accorder un peu de votre temps.
Je viens d'arriver dans une société qui a un intranet existant et j'ai un petit souci sur une des tables de la base de donnée sous MySQL.
Cette table fait 3Go !! Vous entendez bien 3Go ! C'est un peu énorme...
Ce que je voudrais faire c'est faire une requête pour soulager tout ça en attendant de refaire leur intranet et donc la base de donnée.
La table est structuré de la manière suivante :
C'est une table qui permet de géré comme vous pouvez le voir le traffic de bande passante d'un client.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE `traffic` ( `timer` date NOT NULL default '0000-00-00', `host` char(15) NOT NULL default '', `port` int(11) NOT NULL default '0', `protocol` int(11) NOT NULL default '0', `bytesin` bigint(11) NOT NULL default '0', `bytesout` bigint(11) NOT NULL default '0', PRIMARY KEY (`timer`,`host`,`port`,`protocol`), KEY `hostsidx` (`host`) ) TYPE=MyISAM;
Un script perl existant et que je peux pas touché pour le moment rempli la table chaque jour.
Donc pour un jour particulier, un host, sur un port avec un protocole particulier on a une valeur entrante et sortante.
Ce que je voudrais faire c'est fusionner tout les enregistrements d'un host sur un port avec un protocle sur un mois par exemple.
Mais comme je peux pas touché tout, je voudrais par exemple regroupé toutes les données d'un host au 2006-01-01 pour le mois de janvier, au 2006-02-01 pour le mois de février,etc. tout en faisant la somme des valeurs entrantes et sortantes.
Comme ça au lieu d'avoir pour un host,prot,protocol 30 voire 31 lignes, j'en aurais plus qu'une seule. Et je réduit la taille de ma table considérablement.
Je sais pas si je suis clair mais en fait je voudrais tout faire dans la même table si possible sans avoir à recréer une autre table!
Enfin si c'est pas possible je laisse tomber. Mais là honnetement j'ai pas du tout de solution.
Merci d'avance.
Partager