IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Mettre/archiver les vieilles données sur le côté


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut Mettre/archiver les vieilles données sur le côté
    Bonjour.

    J'ai une DB qui évolue pas mal chaque jour.
    Il y a dans cette DB beaucoup de données qui n'ont quasiment que pour seule valeur de servir d'historique.
    Ainsi je me disais qu'il serait peut-être intéressant pour les performances si je mettais à intervalle ponctuel (tous les jours à minuit par exemple) ces données sur le côté afin de ne conserver dans ma DB que les données nécessaires au fonctionnement en cours et à venir.

    Je ne m'y connais pas sur le sujet. J'ignore par exemple si les partitions seraient une piste illusoire à suivre, etc.

    Donc, j'aimerais que vous me conseilliez un peu si vous le pouvez.
    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Par défaut
    Déplacer les enregistrements de la table courante vers la table archive est une bonne idée.

    Ceci peut être fait par l'intermédiaire d'un script dans un langage tiers (ex: PHP) ou même par création d'une procédure stockée.

    Cependant, avant d'optimiser à fond, combien y a-t-il d'enregistrements dans ta table et combien peux-tu en espérer au maximym sans faire de ménage (dans un scénario raisonnablement pessimiste) ?

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    J'ignore à quel moment j'aurais de gros problèmes de performance.
    Mais quotidiennement, on peut estimer que 95% des nouveaux enregistrements peuvent/devraient être archivés et donc ça augmente vite.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Par défaut
    Si on prend une procédure stockée, voici un exemple de code à exécuter à 0h15.

    On ajoutera une colonne booléenne to_be_archived à la table courante afin d'être sûr de supprimer les enregistrements de la table qui ont été copiés dans l'archive.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    CREATE PROCEDURE nettoie_table() 
    BEGIN
     
      UPDATE table_courante SET to_be_archived = true WHERE date_insertion <= DATE_ADD(CURDATE, INTERVAL -1 SECOND) ;
     
      INSERT INTO table_archive SELECT * FROM table_courante WHERE to_be_archived = true ;
     
      DELETE FROM table_courante WHERE to_be_archived = true
     
    END //
    Un petit LOCK TABLES pourra même être un peu plus sécurisant si jamais tu n'es pas sûr des processes qui ont accès à la base de données.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    La seule méthode suggérée est de dupliquer les tables ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Par défaut
    Si c'est pour des soucis de performance, c'est le système que j'emploierais effectivement en priorité.

    Après tu avais évoqué le partitionnement. C'est également une piste à suivre mais cela dépend de la structure existante de la table et de la manière qu'on a de l'interroger.

    Il faut trouver un bon "angle de partitionnement" pour pouvoir séparer les données (Ex : l'heure d'insertion pour des logs). Mais il ne faut pas que cela handicape des requêtes SELECT qui chercheraient des enregistrements sur plusieurs partitionnement (Perfs légèrement dégradées par rapport à l'absence de partitionnement).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les mêmes données sur plusieurs classeurs
    Par Nicko29 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/04/2012, 21h07
  2. Besoin d'aide Macro récupéré les mêmes données sur classeur fermé
    Par djinero dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/10/2011, 15h40
  3. Réponses: 4
    Dernier message: 02/02/2006, 18h13
  4. lire les données sur un port RS232
    Par xave dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2005, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo