5.1 Vue d'ensemble de l'optimisation
5 Optimisation de MySQL
Manuel de Référence MySQL 4.1 : Version Française
->Limitations et inconvénients des choix conceptuels de MySQL . Portabilité . Pour quoi avons nous utilisé MySQL ? . La suite de tests MySQL . Utiliser vos propres tests de performance
|
5.1.1 Limitations et inconvénients des choix conceptuels de MySQL
Avec les tables de type MyISAM, MySQL utilise un verrouillage extrêmement
rapide (plusieurs lectures / une seule écriture). Le plus gros problème avec
ce type de table survient quand vous avez un mélange de flux de modifications
et des sélections lentes sur la même table. Si c'est une problème sur
plusieurs tables, vous pouvez utiliser un autre type de table pour celles ci.
Types de tables MySQL .
MySQL peut utiliser à la fois des tables transactionnelles et des tables
non-transactionnelle. Pour pouvoir travailler tranquillement avec des tables
non-transactionnelles (qui n'ont pas la possibilité de revenir en arrière si
quelque chose se passe mal) MySQL suit les règles suivantes:
-
Toutes les colonnes ont une valeur par défaut.
-
Si vous insérez une mauvaise valeur dans une colonne (par exemple
NULL
dans une colonne
NOT NULL
, ou encore une valeur numérique trop grande
dans une colonne numérique), MySQL prendra en compte "la meilleure valeur
possible" plutôt que de sortir une erreur. Pour les valeurs numériques, il
s'agit de 0, de la valeur la plus petite possible, ou de la valeur la plus
grande possible. Pour les chaînes, il s'agit soit d'une chaîne vide, soit de
la chaîne la plus longue que peut contenir la colonne.
-
Toutes les expressions calculées retournent une valeur qui peut être
utilisées à la place d'afficher un message d'erreur. Par exemple, 1/0
retourne
NULL
La raison des règles précitées est que nous ne pouvons pas vérifier les
conditions avant que la requête ne commence à être exécutée.
Si nous rencontrons un problème après avoir mis à jour plusieurs lignes,
nous ne pouvons plus revenir en arrière puisque la table ne le supporte
pas. Nous ne pouvons pas nous arrêter car le travail de mise à jour ne serait fait
qu'à moitié, ce qui est sans doute le pire qui puisse arriver. Dans ce cas,
il vaut mieux faire du mieux qu'on peut et continuer comme si rien ne
s'était passé.Ce qui précède signifie qu'il ne faut pas que le contrôle du contenu des champs soit
fait au niveau de MySQL, mais au niveau de l'application.
|