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

PHP & Base de données Discussion :

MyISAM ou InnoBD ? (et un peu de utf8) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut MyISAM ou InnoBD ? (et un peu de utf8)
    Bonjour,

    Je réalise (avec stupeur) que le MyISAM ne gère pas (en tout cas n'est pas supposé gérer) les contraintes de clefs étrangères et que cela est réservé à InnoDB (ref), plus lourd, plus lent et susceptible d'occasionner de graves problèmes quand l'espace disque maximal est atteint (ref).

    Bref, de quoi refroidir les ardeurs quand on veut utiliser les contraintes de clefs étrangères.

    D'ou mes questions :

    - Utiliseriez vous InnoDB pour gérer des données critiques
    - Concernant l'espace de stockage, c'est quoi l'ordre de grandeur quand ils disent "beaucoup plus d'espace" (par exemple, j'ai une BDD MyISAM de 50Mo)?
    - En terme de performance, faut-il vraiment attendre quelque chose catastrophique par rapport a un MyISAM ?

    Enfin, je profite de ce sujet pour glisser quelques questions sur UTF-8.

    est-ce que l'interclassement visible sur phpmyadmin correspond bien au codage de la table où est-ce juste la méthode de trie des enregistrements ? Le cas échéant, comment forcer l'encodage UTF-8 de ses tables ?

    En vous remerciant.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Si l'intégrité référentielle est vraiment importante pour toi, alors il n'y a pas à tortiller : utilise InnoDB. Le terme de données critiques n'est pas forcément déterminant, tout dépend du pourquoi elles sont critiques.
    A faible charge, la différence n'est pas flagrante... il faut voir en fonction de l'utilisation de ton côté. Quoi qu'il en soit, le moteur InnoDB peut se tuner (voir http://dev.mysql.com/doc/refman/5.0/...db-tuning.html).

    Après, si tu ne peux pas justifier avec assurance le besoin d'intégrité référentielle, d'une meilleure gestion des accès concurrents (InnoDB gère les enregistrements "multi-versionnés")... alors MyIsam te conviendra sans souci.

    Sachant que rien n'empêche de définir des tests pour "durcir" le tout dans ton application (si la base est utilisée par une application pour laquelle tu as la main sur le code).

    En ce qui concerne l'espace de stockage, j'avoue que je ne sais pas... le chiffre "50% en plus" m'est venu à l'esprit, mais je ne sais plus d'où il sort, donc j'ai envie de dire qu'il ne vaut rien.

  3. #3
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    J'ai un pote qui me suggère de faire le dev sous InnoDB puis de le passer en MyISAM pour la prod... De la sorte, en laissant cracher l'appli lors d'une violation de contrainte, je serais sur qu'une fois tous les test réussi, le code interdise les manipulations susceptibles de provoquer ce genre d'erreur... Puis ça permettra de se faire une idée de l'espace de stockage nécessaire.

    Pour les données, en MyISAM, 50Mo environ pour le moment, avec une croissance de 10 à 20Mo / an sur environ 80 tables.

    Pour l'intégrité, on s'est rendu compte dans la dernière version qu'il y avait une "fuite", des suppressions incomplètes qui laissaient des éléments lié à rien dans des tables. Ce n'était rien de grave, mais ça aide à prendre conscience du fait que ne pas utiliser les contraintes peut vraiment amener à des problèmes. C'est un peu comme les sauvegardes... On les recommandes aux autres sans en faire pour soit jusqu'au jours où on se rend compte qu'on a été très con de pas en faire :p

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    J'avais oublié de citer la FAQ : http://mysql.developpez.com/faq/?page=SYNTAXE_FORMATS
    Je crois qu'elle suffisait à répondre à tes questions

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

Discussions similaires

  1. [phpMyAdmin] MyISAM OU innoBD?
    Par amazircool dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 22/04/2007, 13h12
  2. je m'y perd un peu dans tous ces plugin
    Par Stessy dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 30/09/2003, 23h33
  3. RTL60 ( la jsuis un peu confused)
    Par magdoz dans le forum Outils
    Réponses: 7
    Dernier message: 23/07/2002, 11h20
  4. DirectX 6, un peu en retard ... :\
    Par multani dans le forum DirectX
    Réponses: 3
    Dernier message: 28/05/2002, 19h19

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