| Précédent | Table des matière | Suivant |
![]() | ![]() |
La liste suivante indique la manière dont mysqld utilise la mémoire. A chaque fois que c'est possible, le nom des variables systèmes adéquates sont cités.
key_buffer) est partagée par tous les threads; Les autres buffers sont alloués selon les nécessités.
thread_stack) ; un buffer de connexion (variable net_buffer_length), et un buffer de résultat (variable net_buffer_length). Les buffers de connexion et de résultat sont dynamiquement aggrandi jusqu'à la taille maximale de max_allowed_packet selon les besoins. Quand une requête est en cours d'exécution, une copie de la chaîne de requête est aussi allouée.
record_buffer).
BLOB sont stockées sur le disque. Un des problèmes récurent est que si une table stockées en HEAP dépasse la taille de tmp_table_size, vous obtener une erreur de type The table nom_table is full. Dans les prochaines versions, les tables temporaires sauvées en mémoire seront automatiquement transférées sur le disque. Pour contourner le problème, vous pouvez augmenter le nombre de tables temporaires avec l'option tmp_table_size ou avec l'option SQL SQL_BIG_TABLES dans le programme client. Confère section 7.24 SET OPTION. Avec MySQL 3.20, la taille maximum des tables temporaires était record_buffer*16, donc, si vous utilisez cette version, vous devez augmenter la valeur de record_buffer. Vous pouvez aussi démarrer mysqld avec l'option --big-tables pour forcer le stockarge des tables temporaires sur le disque. Cependant, cela va affecter les performances des requêtes compliquées.
n la taille maximum d'une ligne, hormis les BLOB ). Un objet BLOB ustilise 5 à 8 octets plus la taille des données de l'objet BLOB.
BLOB, un buffer est automatiquement aggrandi pour pouvoir lire les grands objets BLOB. Si vous scannez une table, un buffer aussi grand que le plus grand des objets BLOB sera alloué.
mysqladmin flush-tables ferme toutes les tables qui ne sont pas en cours d'utilisation, et s'assure que toutes les tables ouvertes seront aussitôt refermées dès que le thread qui les utilisent auront terminé. Cela permettra de libérer l'essentiel de la mémoire.
ps et d'autres programmes rapportent parfois que mysqld utilise beaucoup de mémoire. Cela peut être du à de nombreuses piles, dans différents threads, à différentes adresses. Par exemple, la version Solaris de ps compte la mémoire inutilisée entre les piles comme de la mémoire utilisée. Vous pouvez vérifier ceci en vérifiant le swap disponible, avec : swap -s. Nous avons testé mysqld avec des détecteurs de fuite de mémoire du commerce, et il n'y a plus de fuites de mémoire.
![]() | Table des matières | ![]() |
| Précédent | ![]() | Suivant |