1.5 Est ce que MySQL est stable?

Cette section répond aux questions "Qu'elle est la stabilité de MySQL?'' et, ``Puis-je faire confiance à MySQL sur ce projet?''. Nous allons essayer de clarifier quelques problèmes et répondre aux questions les plus importantes qui concernent une majorité de personnes. Cette section rassemble les informations récoltées dans la liste de diffusion (qui est très active dans l'identification des bogues).

A TcX, MySQL fonctionne depuis mi-1996 sans aucun problème. Lorsque MySQL a été diffusé auprès du grand public, un certain nombre de codes n'avaient pas été testés et ils ont été vite identifiés par les nouveaux utilisateurs qui ont utilisé les requêtes d'une manière différente de la notre. Chaque nouvelle release a moins de problèmes de portabilité que la précédente (même si à chaque fois de nouvelles fonctionnalités sont identifiées), et nous espérons bientôt qu'une prochaine version sera labellisée "Stable".

Chaque release de MySQL est utilisable et il n'y a de problèmes uniquement lorsque les utilisateurs commencent à utiliser les "zones d'ombres". Naturellement, il est difficile de connaître le contenu de ces zones d'ombres; cette section a pour objectif d'identifier les zones connues. La description concerne la version 3.22.x de MySQL. Tous les bogues connus sont corrigés dans la dernière version, à l'exception de la liste des bogues répertoriés dans la section des erreurs. Cf. section E Erreurs connues et manques de MySQL.

MySQL est décomposé en plusieurs couches et différents modules indépendants. Les modules sont listés ci-dessous avec leur état de stabilité :

Le gestionnaire de tables ISAM -- Stable
Il gère le stockage et la lecture de toutes les données. Dans toutes les releases de MySQL, un seul bogue a été reporté. La seule façon connue d'avoir une table corrompue est de "tuer" le serveur au milieu de la mise à jour. Et même un tel scénario ne détruira probablement pas toutes les données sans qu'il soit possible de les récupérer, car toutes les données sont vidées de la mémoire, entre chaque requête. Il n'y a jamais eu de bogues liés à la destruction de données.
L'analyseur syntaxique et l'analyseur lexical -- Stable
Il n'y a pas un seul bogue d'identifié depuis longtemps dans ce module.
Le code du client C -- Stable
Pas de problèmes connus. Dans la version précédente 3.20, il y avait quelques limites dans la taille du buffer d'envoi/réception. Depuis de la 3.21.x, la taille du buffer est maintenant dynamique et initialisé par défaut à 24M.
Programmes clients standards -- Stable
Cela inclus mysql, mysqladmin et mysqlshow, mysqldump, et mysqlimport.
Basic SQL -- Stable
Système de fonction basic SQL, classes de chaînes de caractères et gestion dynamique de la mémoire. Pas de bogues identifiés.
Optimiseur de requête -- Gamma
Optimiseur d'intervalle -- Stable
Optimiseur de jointure -- Stable
Verrouillage -- Gamma
Cela est très dépendant du système. Sur certains systèmes il y a de gros problèmes en utilisant le verrouillage standard de l'OS (fcntl()). Dans ces cas là, vous devriez faire fonctionner le démon MySQL avec l'option --skip-locking. Les problèmes sont connus, sur quelques systèmes Linux et sur SunOS lorsque le gestionnaire de fichiers est monté sur NFS.
Linux threads -- Gamma
Le seul problème identifié concerne l'appel de la fonction fcntl(), qui est résolu en utilisant l'option --skip-locking de mysqld. Quelques personnes ont reporté des problèmes avec la version release 0.5.
Solaris 2.5+ pthreads -- Stable
Nous l'utilisons pour nos systèmes en production.
MIT-pthreads (autres systèmes) -- Gamma
Il y a pas de bogues identifiés depuis la 3.20.15 et la 3.20.16. sur quelques systèmes, il y a un disfonctionnement . Quelques opérations sont assez lentes (un arrêt de 1/20 second est effectué entre chaque requête). Bien sur, MIT-pthreads peut ralentir un peu l'ensemble, mais les commandes SELECT qui utilisent des index sont faites en un laps de temps tellement court, que le verrouillage et l'échange de thread n'est pas nécessaire.
Autres implémentations -- Alpha - Beta
Le portage sur d'autres systèmes restent assez nouveau et ont peut-être des bugs, probablement dans le serveur MySQL, et plus certainement dans l'implémentation des threads.
LOAD DATA ..., INSERT ... SELECT -- Stable
Quelques personnes ont cru identifier des bogues dans ce module, c'était lié à une méprise. Vérifier la documentation sur le sujet!
ALTER TABLE -- Gamma
Changements mineures dans la 3.22.12.
DBD -- Gamma
Maintenant maintenu par Jochen Wiedmann
mysqlaccess -- Gamma
Ecrit et maintenu par Yves Carlier
GRANT -- Beta
Gros changement dans la MySQL 3.22.12.
MyODBC (utilise ODBC SDK 2.5) -- Beta
Il fonctionne normalement avec la plupart des programmes.

TcX fournit un support payant par email, cependant la mailing liste MySQL répond à la plupart des questions. Les bogues sont en général corrigés par des patchs; pour les bogues plus importants, il y a de nouvelles versions.