Comment MySQL compte les tables ouvertes <<< |
Quand MySQL ouvre et ferme les tables | Inconvénients de la création d'un grand nombre de tables dans la même base de données >>> |
7.4 Optimiser la structure de la base de données 7 Optimisation de MySQL Manuel de Référence MySQL 4.1 : Version Française . Conception . Rendre vos tables aussi compactes que possible . Index de colonnes . Index sur plusieurs colonnes . Comment MySQL utilise les index . Le cache de clé des tables MyISAM . Comment MySQL compte les tables ouvertes ->Quand MySQL ouvre et ferme les tables . Inconvénients de la création d'un grand nombre de tables dans la même base de données |
7.4.8 Quand MySQL ouvre et ferme les tables
table_cache , max_connections et max_tmp_tables affectent le nombre maximum de tables que le serveur garde ouvertes. Si vous augmentez l'une de ces valeurs, vous pourriez rencontrer une des limites de votre système d'exploitation. Cependant, vous pourrez augmenter ces limites sur de nombreux systèmes d'exploitation. Consultez votre documentation système pour voir comment faire cela, car la méthode pour modifier la limite est différente pour chaque système. table_cache est lié au max_connections . Par exemple, pour 200 connexions simultanées, vous devriez avoir un cache de table d'environ 200 * n , où n est le nombre maximum de table dans une jointure. Vous devez aussi réserver des pointeurs de fichiers supplémentaires pour les tables temporaires et les fichiers. Assurez vous que votre système d'exploitation peut gérer le nombre de pointeurs de fichiers demandé par l'option table_cache . Si table_cache est trop grand, MySQL peut être à court de pointeurs, et refuser des connexions, échouer à l'exécution de requêtes, ou être très instable. Vous devez aussi prendre en compte que les tables MyISAM peuvent avoir besoin de deux pointeurs de fichiers pour chaque table différente. Vous pouvez augmenter le nombre de pointeurs de fichiers disponibles pour MySQL avec l'option de démarrage --open-files-limit=# . Fichier non trouvé .Le cache de tables ouvertes reste au niveau de table_cache entrées (par défaut, 64; cela peut être modifié avec l'option -O table_cache=# de mysqld ). Notez que MySQL peut ouvrir temporairement plus de tables, pour être capable d'exécuter des requêtes. Une table qui n'est pas utilisée est refermée, et supprimée du cache de table, dans les circonstances suivantes :
Si vous ouvrez une table avec HANDLER table_name OPEN , un objet de table dédié sera alloué pour le thread. Cet objet de table n'est pas partagé avec les autres threads, et il ne sera pas fermé avant que le thread n'appelle HANDLER table_name CLOSE , ou que le thread ne meurt. Syntaxe de HANDLER . Lorsque cela arrive, la table est placée dans le cache de table (si il n'est pas plein). Vous pouvez vérifier si votre cache de table n'est pas trop petit en vérifiant la variable de mysqld appelée Opened_tables . Si cette valeur est grande, même si vous n'avez pas trop abusé de la commande FLUSH TABLES , vous devrez augmenter la taille du cache. Syntaxe de SHOW STATUS . |