MySQL 5.0.3 beta contient de nombreuses fonctionnalités :
Conditions de
Push-Down
: une requête
telle que
SELECT * FROM t1 WHERE non_indexed_attribute = 1;
va utiliser un scan de table complet, et la condition sera
évaluée dans chaque noeud du cluster. Par conséquent, il
n'est pas nécessaire d'envoyer les lignes à travers le
réseau pour qu'elles soient évaluées : on utilise le
transport de fonctions, et non pas le transport de données.
Pour ce type de requête, la vitesse d'exécution
s'améliore d'un facteur de 5 à 10. Notez que ce type de
fonctionnalité est actuellement désactivé par défaut, en
attente de plus de tests, mais il devrait fonctionner dans
la plupart des cas. Cette fonctionnalité peut être
activée via la commande SET
engine-condition-pushdown=On;
.
Autrement, vous pouvez exécuter le serveur
mysqld avec cette fonctionnalité active
par défaut en lan¸ant le logiciel avec l'option de
démarrage --engine-condition-pushdown
.
Vous pouvez utiliser EXPLAIN
pour savoir
si ces conditions sont remplies.
Un avantage majeure de cette modification est que les requêtes sont maintenant exécutées en paralelle. Cela signifie que les requêtes effectuées sur des colonnes non-indexées s'exécute 5 à 10 fois, multiplié par le nombre de noeud de stockages, plus vite que précédemment, car plusieurs processeurs sont utilisés en paralelle.
Économie de
IndexMemory
: en MySQL 5.0,
chaque enregsitrement consomme environs 25 octets en
mémoire d'index, et chaque index unique utilise 25 octets
par ligne en mémoire, en plus de la mémoire nécessaire au
stockage dans une table séparée. Ceci est lié au fait
qu'il n'y a pas de stockage de la clé primaire dans la
mémoire de l'index.
Activation du cache de requête pour
MySQL Cluster
: voyez
Section 5.11, « Cache de requêtes MySQL » pour des informations sur la
configuration et l'utilisation du cache de requête.
Nouvelles optimisations : une optimisation qui mérite l'attention est que l'interface de lectures en groupe est maintenant utilisée dans certaines requêtes. Par exemple, observez la requête suivante :
SELECT * FROM t1 WHERE primary_key
IN (1,2,3,4,5,6,7,8,9,10);
Cette requête sera exécutée 2 à 3 fois plus vite que
dans les versions précédentes du MySQL
Cluster
, car les recherches d'index sont envoyées
en groupe et non plus de manière unitaire.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.