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

SQL Procédural MySQL Discussion :

InnoDB + Transactions ou MyIsam


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut InnoDB + Transactions ou MyIsam
    Bonjour,

    J'ai un application qui insert environ 10 000 enregistrements par jours. Toutes les tables de cette base de donnés fonctionnent avec le moteur InnoDB.

    Ce logiciel est en fonction depuis un certain temps et jusqu'ici la plus grosse table contient plus de 4 millions d'enregistrements, ce qui à pour effet d'avoir un assez gros impact sur les performances .

    Malgré tout, j'ai judicieusement créé mes indexes de façon à ce que les performances en lecture soit prioritaires.

    Je me demande si je n'aurais pas mieux fait de tout bâtir sous MyIsam ?
    J'avais choisis InnoDB parce que j'ai lu que la sécurité des données est plus fiable et que les transactions y sont possibles.

    Pour la sécurité, je me dis qu'au pire on pourrait perdre une journée de données (backup journalier) mais nous pourrions récupérer ces données perdues puisqu'elles provienent de fichiers et que ces fichiers sont conserver sur un autre poste.

    Pour ce qui est des transactions, quand DOIT-ON les utiliser ?
    Si par exemple un nouvel utilisateur web est créé :

    - Insertion l'utulisateur dans la table Users
    - Insertion des rôles de cet utilisateur dans la table UsersRoles
    - ...
    - Etc.

    Dans ce cas-ci, si un plantage survent lors d'une de ces lignes, l'utilisateur ne peu être créé à MOITIÉ ! Donc les enregistrement relatifs ne doivent pas être gardées... Est-ce un bon exemple pour l'utilisation de transaction ?

    Si les transactions ne me sont pas vraiment utiles, alors je modifierais mes table sous MyIsam pour récupérer les performances en lecture que j'ai besion.

    Merci à tous.

  2. #2
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Salut,

    InnoDB et les transactions sont là pour garantir la robustesse de la base dans un contexte OLTP, avec beaucoup d'insertions concurrentes. Ca a l'air d'être ton cas et je ne pense pas que tu y gagnes en termes de fiabilité en passant à MyISAM.
    La rapidité est un objectif louable mais si c'est pour que le serveur merdoie ou que les données se retrouvent dans un état incohérent régulièrement, il y a mieux à faire

    Tu as peut-être aussi des données "obsolètes" que tu pourrais archiver, à ce moment-là du MyISAM ou Archive (MySQL 5.0) suffiraient effectivement...

  3. #3
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Citation Envoyé par Maximilian
    Tu as peut-être aussi des données "obsolètes" que tu pourrais archiver, à ce moment-là du MyISAM ou Archive (MySQL 5.0) suffiraient effectivement...
    Que veux-tu dire par là ?

    J'ai longuement chercher comment faire un système de partition sur MySQL (un peu comme sur Oracle). Les données sont souvent consultées pour le mois courrant mais après elles sont plus considérées comme des archives. Bien qu'elles doivent être consultablent quand même.

    Par la même occasion, j'ai des données qui proviennent de plusieurs stations et celle-ci sont regroupées par date. Donc ma clé primaire est basée sur la station et la date. J'ai établie mon index sur la date car c'est sur celle-ci que les SELECT exécutés. Est-ce que c'est bien un index sur un champs DateTime ?

  4. #4
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Citation Envoyé par Erakis
    Que veux-tu dire par là ?
    Par archives je voulais dire données qui ne sont plus modifiées mais seulement consultées. Si tu veux absolument utiliser du MyISAM autant le faire sur ces données-là.

    J'ai longuement chercher comment faire un système de partition sur MySQL (un peu comme sur Oracle).
    MySQL 5.1 (alpha release) le propose.

    Par la même occasion, j'ai des données qui proviennent de plusieurs stations et celle-ci sont regroupées par date. Donc ma clé primaire est basée sur la station et la date. J'ai établie mon index sur la date car c'est sur celle-ci que les SELECT exécutés. Est-ce que c'est bien un index sur un champs DateTime ?
    Oui, tout autant que sur un varchar par exemple.

  5. #5
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Merci beaucoup.

    C'es toujours agréable de se faire répondre par une personne aussi expérimenté dans le domaine .

  6. #6
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    De rien. Tiens-nous au courant si jamais tu réalises quand même des tests ou autres

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/07/2010, 15h19
  2. [InnoDB] Transaction sans requete SQL
    Par sliderman dans le forum Requêtes
    Réponses: 1
    Dernier message: 08/04/2010, 12h36
  3. Base de données InnoDB et non MyIsam
    Par grenoult dans le forum MySQL
    Réponses: 12
    Dernier message: 21/01/2009, 19h58
  4. innodb et myisam
    Par phil83 dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/10/2005, 11h57
  5. convertir InnoDB en MyISAM
    Par wizze dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 19/08/2005, 11h02

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