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 :

Possible passage vers le partionnement d'une table?


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 812
    Par défaut Possible passage vers le partionnement d'une table?
    Bonjour,
    Le site web de notre entreprise est actuellement sous vivvo. Un CMS assez puissant mais très gourmand en ressources. Il a fallu plus d'un mois avant que le site ne soit réellement opérationnel après sa mise en service.

    Actuellement, la version du serveur mysql est 5.5.42. La table principale des articles dépasse le 1 Go avec plus de 202 000 enregistrements depuis aout 2001 jusqu'à aujourd'hui, aout 2015, avec des changements quotidiens (ajout de cinquantaine d'articles par jour).
    Les scripts de vivvo utilisent MyIsam comme moteur et beaucoup de tables avec des enregistrements liés. Par exemple, un champ tag de la table Articles lié à un champ de la table Articles_Tags. Une autre table contenant les révisions majeures liée elle aussi à la table Articles. Une table Articles_attachements, une autre Articles_commentaires... et j'en passe.

    Si je décide de passer par le partitionnement de la table Articles pour alléger les traitements en la scindant en années :
    1. Est-ce que les scripts de consultation de la table, d'insertion et de mise à jour vont changer aussi?
    2. Est-ce que à chaque nouvelle année je dois faire un ALTER TABLE pour ajouter une nouvelle partition?
    3. Est-ce qu'il y aura une incidence sur les clés (indexes)? Il y a plus de quinze clés sur la seule table Articles.

    Merci de m'avoir lu,

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut
    Bonjour,

    Honnêtement le partitionnement MyIsam sur une <5.6 je suis pas fan.

    https://dev.mysql.com/doc/refman/5.6...s-locking.html

    Partant de ce postulat quoiqu'il en soit la partition d'une table MyIsam me semble un peu limitée.

    Cela n'engage que moi, des experts auront probablement plus de pro and con à faire valoir

  3. #3
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 812
    Par défaut
    Bonjour,
    Période de vacances? J'attends donc la réponse de gens mieux avisés avant de me lancer.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 682
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par kabkab Voir le message
    1. Est-ce que les scripts de consultation de la table, d'insertion et de mise à jour vont changer aussi?
    Non : le partitionnement ne nécessite pas de modification de vos traitements existants

    Citation Envoyé par kabkab Voir le message
    2. Est-ce que à chaque nouvelle année je dois faire un ALTER TABLE pour ajouter une nouvelle partition?
    Oui, mais c'est une opération simple, et vous pouvez anticiper en créant d'office quelques partitions pour les années à venir

    Citation Envoyé par kabkab Voir le message
    3. Est-ce qu'il y aura une incidence sur les clés (indexes)? Il y a plus de quinze clés sur la seule table Articles.
    C'est beaucoup en effet, sont ils tous discriminants, vérifiez les cardinalités des clefs il y en a probablement quelques uns qui sont inutiles

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 136
    Par défaut
    Salut kabkab.

    Citation Envoyé par kabkab
    Si je décide de passer par le partitionnement de la table Articles pour alléger les traitements en la scindant en années :
    Oui, je comprends ce que vous dites, c'est-à-dire pour "alléger les traitements".
    Dois-je comprendre que vos requêtes utilisent déjà le critère de l'année ?
    Si ce n'est pas le cas alors il faut revoir vos requêtes pour justement faire en sorte que la requête s'aligne sur la partition.

    Et dans le cas où vos requêtes n'utilisent pas le critère de la date, vous aurez des surprises sur la performance et l'obtention des résultats.
    D'une part, votre requête sera légèrement plus longue en durée d'exécution et d'autre part, vous aurez un affichage différent.
    Il faudrait savoir comment sont écrites vos requêtes pour débattre de cette question.

    Si vos requêtes n'utilisent plus les anciens articles, disons ceux de 2001, qu'est-ce que vous en faites ?
    Il serait bon alors de les purger définitivement de votre table Articles et de les archiver.
    De ce fait, la volumétrie va considérable diminuer et améliorer vos performances.

    Mais est-ce la seule raison au choix de vouloir partitionner votre table ?
    C'est-à-dire une question de performance ? Performance en quoi ? A l'insertion, à l'exécution de certaines requêtes et lesquelles ...
    Une solution possible serait d'augmenter la taille de votre RAM, de changer vos disques et d'en mettre des plus rapides, de passer à "engine=memory" ...

    1. Est-ce que les scripts de consultation de la table, d'insertion et de mise à jour vont changer aussi?
    Si c'est en terme de fonctionnalité, NON. Le fait de passer à un partitionnement est totalement transparent.

    Mais si vous créez une partition sur une date, par exemple, vous devez faire apparaitre cette date dans une clause "where" afin d'améliorer les performance, sinon cela ne sert à rien.

    2. Est-ce que à chaque nouvelle année je dois faire un ALTER TABLE pour ajouter une nouvelle partition?
    Il est toujours mieux de prévoir à l'avance la volumétrie de chaque partition que l'on va utiliser.
    Il serait bon aussi de penser à répartir vos partitions sur des disques différents afin d'améliorer leur accessibilité.

    Mais si votre question est de savoir si une partition se crée automatiquement, la réponse est NON.
    Vous devez faire par vous-même les déclaratives pour créer vos partitions. Voir la documentation MySql à ce sujet.

    3. Est-ce qu'il y aura une incidence sur les clés (indexes)? Il y a plus de quinze clés sur la seule table Articles.
    Qu'est-ce que vous entendez par 'incidence' ?

    Normalement, une partition, c'est comme une sous-table. De ce fait, la volumétrie sera moindre vis-à-vis de la table d'origine.
    Mais si vous avez vingt partitions, chaque partition aura ses quinze indexes.

    @+

Discussions similaires

  1. Est-il possible de lister les vues d'une table ?
    Par guidav dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 07/02/2019, 08h21
  2. Réponses: 3
    Dernier message: 07/09/2012, 16h19
  3. [CR 8] Est-il possible de gérer les droits sur une table de la base
    Par foulla dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 06/01/2009, 16h16
  4. [SQLServer 2K5] Partionnement d'une table
    Par joKED dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 12/12/2008, 00h35
  5. Réponses: 1
    Dernier message: 31/12/2007, 15h16

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