Partage
  • Partager sur Facebook
  • Partager sur Twitter

MySQL ne gère pas l'intégrité réferentielle?

    15 septembre 2011 à 22:23:58

    Bonsoir,

    j'ai lu dans ce tuto :

    Citation


    Bien que PostGreSQL soit plus avancé technologiquement que MySQL, il a une lacune en vitesse sur les faibles volumes de données. Ainsi MySQL, par le fait qu'il ne gère pas l'intégrité référentielle par exemple, se révèle plus rapide que PostGreSQL puisqu'il ne doit pas faire les tests d'intégrité (qui permettent de vérifier qu'une base de données est cohérente pour rappel).



    L'intégrité réferentielle c'est bien les foreign key? On peut les gérer en mysql avec innodb non?

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      15 septembre 2011 à 22:34:36

      MyISAM ne gère pas l'intégrité référentielle, InnoDB, si.
      • Partager sur Facebook
      • Partager sur Twitter
        16 septembre 2011 à 9:52:05

        Citation : bouzbou

        Bien que PostGreSQL soit plus avancé technologiquement que MySQL, il a une lacune en vitesse sur les faibles volumes de données. Ainsi MySQL, par le fait qu'il ne gère pas l'intégrité référentielle par exemple, se révèle plus rapide que PostGreSQL puisqu'il ne doit pas faire les tests d'intégrité (qui permettent de vérifier qu'une base de données est cohérente pour rappel).



        C'est une légende urbaine.

        Détails ici (règle ACID) : http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID

        MyISAM ne gère pas l'intégrité et est effectivement beaucoup plus rapide pour les opérations d'écriture (UPDATE,INSERT), mais il y a deux gros défauts :
        1) les écritures bloquent tout accès concurrent... donc pour une utilisation type site web, à partir d'un certain niveau de charge, les performances s'écroulent, il suffit d'un petit flux d'updates pour jarter tous les SELECT...
        2) pas d'intégrité, donc utilisable uniquement dans certains cas : lecture seule, cache, données jetables, temporaires, logs, etc, l'utilisation de MyISAM pour un site de e-commerce est du suicide...

        Avec MyISAM un UPDATE peut foirer au milieu et t'as que la moitié des lignes qui sont update. Si ton serveur crash il est impossible de savoir si la table contient les bonnes données.

        En fait, l'intérêt principal de MyISAM est la compacité (donc pour la même quantité de RAM, on garde plus de données en cache) et la rapidité en écriture (uniquement dans un scénario sans accès concurrents). MyISAM est réservé uniquement à certains usages.

        Pour ce qui est de InnoDB, il est à peu près aussi rapide que postgres, mais gère moins bien les accès concurrents.
        L'optimiseur de requêtes de MySQL est correct sur des requêtes simples, mais ridicule dès que ça se complique...

        Pour une requête idiote (SELECT * WHERE primarykey=constante) MySQL sera un peu plus rapide ; mais postgres revient au même niveau si on utilise des requêtes préparées. En fait comme ce type de requête prend dans les 50 µs, il y a plus de temps passé dans la logistique (tcp/ip, OS, etc) que dans la BDD !

        Pour une grosse requête (agrégats, grosses jointures, plein de tables, etc) j'en ai déjà vu qui se faisaient en 0.1s dans postgres et quelques heures dans MySQL...

        Le hardware joue énormément (pour les écritures surtout).

        • Partager sur Facebook
        • Partager sur Twitter

        MySQL ne gère pas l'intégrité réferentielle?

        × 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