Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Optimisation de requête update [ MySQL / Requêtes ] (Rankin)

vendredi 8 août 2008 à 14:27:01 | Optimisation de requête update

Rankin

Salut à tous !

Je travaille actuellement sur le développement d'un plugin pour Nagios qui permet d'analyser les logs. En deux mots, une application sur les machines distantes stocke dans une base de données les logs correspondant à des filtres définis par l'administrateur.
Côté serveur Nagios, le plugin se charge de récupérer ses données, de les enregistrer dans ses propres tables et de fournir un résultat.
Seulement, j'ai un petit souci que je souhaiterai optimiser. J'ai constaté qu'une requête prend pas mal de temps et je n'ai pas trouvé de meilleure solution pour effectuer cette opération et c'est pourquoi je sollicite votre aide charitable :)

Voilà : j'ai sur le serveur une table HISTORIQUE_ALERTES et une table MESSAGE_LOG. La première conserve un historique des alertes (par ex, tentative échouée de connexion ssh) et la seconde les messages correspondant dans les fichiers de log. Une clé étrangère dans MESSAGE_LOG permet de savoir à quelle alerte le message est rattaché : plusieurs messages peuvent correspondre à une alerte.
Le souci, c'est pour "synchroniser" ces valeurs. J'ai donc ajouté un champ dans chacune des deux tables qui contient une valeur créée en concaténant différentes informations de manière à rendre chaque couple identifiable de manière unique à un instant t. Je pense que je pourrais ne fonctionner qu'avec une égalité entre ces deux champs pour faire des jointures, mais je trouve ça un peu dégueulasse ; donc je veux utiliser la clé étrangère et supprimer la valeur des champs servant à la synchronisation.
Je sais pas si je suis très clair, mais j'insère la requête, ça vous donnera une idée :

update MESSAGE_LOG set MESSAGE_LOG.HIS_NUM = (select H.HIS_NUM from HISTORIQUE_MESSAGE H where H.MEA_ID = MESSAGE_LOG.MEA_ID) where MESSAGE_LOG.MEA_ID IS NOT NULL

C'est donc relativement long puisque pour chaque update, ça va chercher dans l'autre table la ligne correspondante. Si j'ai été suffisamment clair, auriez-vous une idée pour alléger un peu la charge de mon petit serveur MySQL qui tire la langue ? Dans le cas contraire je me ferai une joie (enfin tout est relatif) de répondre à vos questions si vous avez besoin de plus de détails.
Merci !




Cette discussion est classé dans : message, serveur, log, requête, update


Répondre à ce message

Sujets en rapport avec ce message

requête UPDATE [ par richch ] Salut,Voici une requête qui ne fonctionne pas, j'ai pas traové l'erreur, veuillez m'aider.SQL = "UPDATE admin SET password='" & nouveauMpasse & "'logi requête sql (update avec deux bases) [ par jee0404 ] Bonjour,            Je veux pouvoir updater le prix de mes enregistrements de la base de donnée 1 avec les prix de la base de donné 2 , si le champ it Update sur plusieurs tables [ par Chris_LaFouine ] Bonjour,Je voudrais savoir comment mettre à jour une table à partir des données d'une autre table. Je m'explique...J'ai une table A et une table B. Je Problème requête UPDATE. [ par woot6768 ] Bonjour,J'ai un soucis avec une requête UPDATE, je vous fournis le code correspondant (codé en c#) :string lineCmd = "UPDAT requête update sql/as400 [ par vkrf ] BonjourJe rencontre sur as/400 v5r1  un problème avec la requete SQL suivante :update mabib/fichier1 set colonne100 = (select colonne2 from mabib/fich Accès à un autre serveur [ par anspauldou ] SalutJ'ai un problème. J'ai 2 serveurs A et B ayant win 2000 et SQL 2000. je suis parvenu à inscrir le serveur A au serveur B. Dans l'analyseur de req Message d'Erreur [ par cavalier2400 ] Bsr, En essayant cette requête sur un champ Alphanumérique d'une table, pourtant, beaucoup de requête de sélection, d'action comme delete, drop, updat Requête INSERT INTO entre deux serveurs [ par bowmore ] Bonjour,   Je cherche à faire une requête INSERT INTO, ou toute autre commande me permettant de transférer des données issues d'une requête select d'u Update [ par fdouieb ] Bonjour,J'ai une procedure stockée sur mon serveur SQL Serveur 2003 ayant un update de ce type    create table #Data    (IdRow                    int pbm update ac serveur sql 2005 [ par goueg83460 ] bonjour je travail sous builder avec les bonne librairie pour se connecter sur un serveur sql. Ce serveur est administré par mysql administrator 1.1.7


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,172 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.