lundi 18 août 2008

MySQL - paramètres dangereux.

Bonsoir,

Aujourd’hui, j’ai appris 2 notions très importantes de la base de données MySQL.

C’est engine storage et la variable strict_trans_tables.

Cela est de l’expérience vécue et pour ça très intéressant.

Engine Storage. MyIsam VS InnoDB. Dans MySQL il y a quelques types de engine storage. MyIsam et InnoDb sont les plus connues. Si votre base utilise MyIsam vous n’avez pas support de transactions et de foreign keys (intégrité de données peut être cassée facilement). Par contre, ce type de stockage est très performant au niveau des requets SQL. C’est le type PAR DEAULT pour les bases MySQL. InnoDB c’est un autre type de stockage qui garantit le respect de foreign keys et plus important – il supporte des transactions. J’ai fait quelques investigations sur InnoDB et découvert que ce brique est développé par un Finlandais qui est rattaché à Oracle. Vous imaginez, le système de transactions est développé par un seul ingénieur ?! Le gars il doit être très très doué…

Variable strict_trans_tables. C’est plus intéressant. A cause de cette variable, nous avons passé plusieurs jours pour comprendre la présence des bugs dans notre application. Tous les bugs ont avait la même nature. Lors des INSETRT sql, certains champs obligatoires (défini comme NOT NULL dans la description des tables) n’ont pas été déclarés, nous attendions une erreur d’insertion SQL. Et non, ça passe sans erreur. Cela nous a coûté plusieurs jours. Aujourd’hui, un gars de mon équipe a trouvé sur internet ce fameux mode strict_trans_tables. Si cette variable est absente dans l’environnement de votre base, votre base devient très permissive et sourde aux erreurs ! Les mauvaises requêtes passent sans erreurs ! C’est très dangereux !

A partir d’aujourd’hui ma confiance à MySQL est diminuée grandement.

Aucun commentaire: