Maison  >  Article  >  base de données  >  Introduction détaillée à la classification et à la configuration du cache MySQL

Introduction détaillée à la classification et à la configuration du cache MySQL

迷茫
迷茫original
2017-03-26 11:31:171349parcourir

Classification du cache MySQL

Pool de tampons InnoDB
Cache du système d'exploitation pour les fichiers journaux InnoDB et les données MyIsAM
Cache de clés MyIsAM
Cache de requêtes
Cache qui ne peut pas être configuré manuellement, journal binaire, cache du système d'exploitation des fichiers de définition de table
D'autres caches, ne nécessitent généralement pas trop de mémoire

Pool de tampons InnoDB
Fonction :
1. Les objets de cache incluent : Lignes de données, index, tampons d'insertion, verrous et structures de données internes.
2. Utilisez le pool de tampons pour retarder l'écriture par les modérateurs, vous pouvez fusionner plusieurs écritures et écrire séquentiellement (périphérique de stockage)
Paramètres associés :
Interrogez la taille du pool de tampons InnoDB, l'unité est en octets
  afficher les variables comme 'innodb_buffer_pool_size';
  La variable innodb_max_dirty_pages_pct affecte le nombre de pages sales,
   Afficher les variables comme 'innodb_max_dirty_pages_pct '
Lorsque les pages sales dépassent le pourcentage spécifié par inno db_max_dirty_pages_pct, l'arrière-plan Le fil de discussion démarre (mode de vidage rapide) pour vider les pages sales sur le disque
Lorsque MySQL manque de mémoire, il existe un thread d'arrière-plan similaire au lazywrite de sqlserver qui vide régulièrement les pages sales sur le disque,
et nettoie le l'espace occupé par les pages sales. L'espace mémoire est utilisé par d'autres données (données qui doivent être chargées en mémoire).
Lorsqu'il n'y a pas d'espace dans le journal des transactions, InnoDB entrera en mode de vidage intense. La raison pour laquelle les gros journaux peuvent améliorer les performances (?)
Tampon d'échauffement :
On peut comprendre que lorsque la base de données est utilisée. démarre, les données seront transférées depuis Le disque est chargé dans la zone de cache pour améliorer les performances d'accès aux données
 Deux méthodes de préchauffage du tampon
 1.Percina Server
 2.Paramètre Init_file, c'est-à-dire spécifier le sql dans Init_file après le démarrage, les données spécifiées dans l'instruction sql seront écrites dans le tampon

Caches de clés MyisAM (caches de clés)

Fonction :
Le cache de clés MyisAM est également appelé tampon de clé. Les tables MyisAM mettent uniquement en cache les index. Les données ne sont pas mises en cache. Le cache de clé MyisAM est l'index mis en cache.
Paramètres associés :
Par défaut, il n'y a qu'un seul cache de clé MyisAM (pool)
Option de configuration key_buffer_size.
Lors de la définition de key_buffer_size, reportez-vous à la taille de l'index. La valeur de key_buffer_size n'est pas Il est nécessaire de la définir plus grande que l'index
Ou pas plus de 25% à 50% de la mémoire totale réservée par le cache du système d'exploitation
Reportez-vous à la taille du champ d'index lors du réglage : select sum(index_length) from information_schema.`TABLES`
Par défaut, mysql va grossir tous les index dans le cache de clés par défaut,
Chaque MyisAM Le cache de clés (pool) a une taille spécifiée, vous pouvez créer plusieurs key_buffer_size pour mettre en cache l'index
Méthode de configuration, ajoutez-le dans le fichier de configuration
  key_buffer_1.key_buffer_size = 1G
  key_buffer_2.key_buffer_size = 1G
En plus de celui par défaut, il y en a au total trois key_buffer_size
  Spécifiez l'index du cache de clés :
   L'index de la table de cache au tampon spécifié :cache index t1,t2 dans key_buffer_1
Ou configurer
dans init_file LODA INDEX INTO CACHE t1,t2 (alloué dans le tampon par défaut)
Calcul de l'utilisation du cache de clé :
100-(( key_buffer_unused*key_cache_block_size)*100/key_buffer_size)
Autres :
1. MyisAM utilise la mémoire du système d'exploitation pour mettre en cache les données. Les données sont souvent plus volumineuses que l'index, donc plus de mémoire doit être réservée pour le cache du système d'exploitation au lieu du cache des clés
2. Même si la table MyisAM ne l'est pas. utilisé, key_buffer_size doit toujours être défini sur une valeur plus petite (telle que 32M). Le serveur mysql peut utiliser la table MyisAM en interne

Cache des threads
Fonction :
Lorsque la connexion est fermée, le libéré le thread est mis en cache et est en état de veille.
Lorsqu'une nouvelle connexion est créée, le thread mis en cache dans le cache peut être directement utilisé pour améliorer l'efficacité de la demande de connexion
Créer un nouveau thread pour chaque connexion
Méthode de consommation :
La nouvelle connexion entrante occupe un thread en état cache du cache (il est supprimé du cache après avoir été occupé),
A la fermeture de la connexion, si le thread cache S'il y en a encore espace, renvoie le thread actuel dans le thread de cache. Si le thread de cache n'a pas d'espace, détruisez ce thread
Paramètres associés :
Thread_cache_size précise le nombre de threads pouvant être enregistrés dans le cache
Chacun La mémoire l'espace occupé par les threads est d'environ 256 Ko,
Sauf en cas d'accès simultané très élevé, il ne doit pas être configuré. Généralement, il n'est pas nécessaire de configurer cette valeur
L'unité est le nombre de threads mis en cache
show. des variables comme 'thread_cache_size'
L'espace mémoire occupé par chaque thread est d'environ 256 Ko,

Cache de table
Fonction :
Principalement lié à la table MyisAM. Ce qui est mis en cache est le résultat de l'analyse .frm de la table et quelques autres données
Après la mise en cache, l'efficacité de l'accès à la table est. amélioré. Pour la table MyIsAM, une fois la table mise en cache, vous pouvez éviter de modifier le fichier d'en-tête MyisAM pour marquer que la table est utilisée
Afficher les variables comme '%table_open_cache%'

Table du dictionnaire de données InnoDB Fonction :
Cache les informations de définition de la table InnoDB,
Chaque fois qu'une table InnoDB est ouverte, la définition de la table sera mise en cache dans le dictionnaire de données, mais elle ne sera pas supprimée du cache après la fermeture de la table

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn