Partage
  • Partager sur Facebook
  • Partager sur Twitter

Partitionnement en MySQL

Je suis un zéro !

Anonyme
    18 juillet 2011 à 7:48:17

    Bonjour,

    J'utilise MySQL depuis déjà quelques années mais c'est la toute première fois que je m’intéresse au partitionnement.

    J'ai une table MySQL contenant plusieurs champs dont le premier (SID) qui contient une chaîne alfa-numérique générée par la fonction sha1 de php.

    Ce que je souhaite, c'est partitionner ma table en fonction du premier caractère de SID.

    Par exemple s'il est entre 0 et 9, dans la partition 1, s'il est entre a et g dans la partition 2 etc.

    Je me doute qu'il faut utiliser la fonction SQL SUBSTRING(`SID`, 0, 1) pour récupérer le premier caractère mais je ne sais pas comment créer les partitions.

    J'ai même pensé à utiliser le code ASCII du premier caractère en utilisant la fonction ASCII(SUBSTRING(`SID`, 0, 1)) en voulant utiliser le partitionnement par intervalles mais sans succès ...
    Tous mes essais ont été des échecs jusqu'à présent.

    Voici le code de ma table actuelle :
    CREATE TABLE `table` (
    	`SID` VARCHAR( 40 ) NOT NULL ,
    	`SNA` VARCHAR( 150 ) NOT NULL ,
    	`STO` VARCHAR( 250 ) NOT NULL ,
    	`SVA` TEXT NOT NULL ,
    	`SLT` INT( 10 ) UNSIGNED ZEROFILL NOT NULL ,
    	`SDA` INT( 10 ) UNSIGNED ZEROFILL NOT NULL
    );
    


    Est-ce possible ? Pouvez-vous m'aider ? :euh:

    Merci d'avance,
    Cyrille.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      19 juillet 2011 à 23:23:30

      Personne n'a d'idée ?
      • Partager sur Facebook
      • Partager sur Twitter
        20 juillet 2011 à 15:31:28

        Pourquoi veux-tu partitionner cette table ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          20 juillet 2011 à 22:24:34

          Pour gagner en performances.
          Cette table correspond à un système de sessions, elle risque donc d'être fortement utilisé ...
          • Partager sur Facebook
          • Partager sur Twitter
            21 juillet 2011 à 0:05:57

            Quelles sont les raisons qui t'amènent à penser que partitionner une table de sessions (donc à accès aléatoire) pourrait augmenter les performances ?
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              21 juillet 2011 à 6:29:25

              Et bien, ayant des centaines voir des milliers de requêtes à faire pour aller récupérer des variables de session en fonction d'identifiants, si l'on pouvait dire par exemple :

              Le premier caractère de l'identifiant est 'a', ce qui correspond à la partition "part_a".

              La requête pour récupérer toutes les variables de sessions dans la table serait plus rapide car la partition les contiendrait toutes alors que beaucoup d'autres variables seraient contenues dans les autres partition ...

              Je ne sais pas si j'arrive à m'expliquer correctement, mais merci d'essayer de me comprendre.
              • Partager sur Facebook
              • Partager sur Twitter
                21 juillet 2011 à 21:17:28

                Si tu t'inquiètes de la performance de tes sessions, mets-les dans memcached, et pas dans une BDD.

                En supposant que tu as utilisé le type de table correct (donc InnoDB) dans ton cas le partitionnement ne sert à rien, car tu fais uniquement de l'accès aléatoire. Tant que la table tient en RAM, la taille a peu d'importance.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  21 juillet 2011 à 21:56:07

                  D'accord, merci pour tes conseils et merci pour ton tuto sur le MySQL.

                  Ps : dans le tout premier chapitre, le lien menant vers un tutoriel consacré aux relations est mort ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 juillet 2011 à 10:10:16

                    Normalement le lien est corrigé...
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Partitionnement en MySQL

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown