Mysql
 sql >> Base de données >  >> RDS >> Mysql

Calcul de la taille du pool de tampons InnoDB pour votre serveur MySQL

Qu'est-ce qu'un pool de tampons InnoDB ?

Le pool de mémoire tampon InnoDB est l'espace mémoire qui contient de nombreuses structures de données en mémoire d'InnoDB, des tampons, des caches, des index et même des données de ligne. innodb_buffer_pool_size est le paramètre de configuration MySQL qui spécifie la quantité de mémoire allouée au pool de tampons InnoDB par MySQL. C'est l'un des paramètres les plus importants dans la configuration de l'hébergement MySQL et doit être configuré en fonction de la RAM système disponible.

Dans cet article, nous vous expliquerons deux approches pour définir la valeur de la taille de votre pool de mémoire tampon InnoDB, examinerons les avantages et les inconvénients de ces pratiques et proposerons également une méthode unique pour arriver à une valeur optimale en fonction de la taille de la RAM de votre système.

Approche 1. Méthode de la règle empirique

La pratique la plus couramment suivie consiste à définir cette valeur entre 70 % et 80 % de la RAM système. Bien qu'elle fonctionne bien dans la plupart des cas, cette méthode peut ne pas être optimale dans toutes les configurations. Prenons l'exemple d'un système avec 192 Go de RAM. Sur la base de la méthode ci-dessus, nous arrivons à environ 150 Go pour la taille du pool de mémoire tampon. Cependant, ce n'est pas vraiment un nombre optimal car il n'exploite pas pleinement la grande taille de RAM disponible dans le système et laisse environ 40 Go de mémoire. Cette différence peut être encore plus importante lorsque nous passons à des systèmes avec des configurations plus importantes où nous devrions utiliser davantage la RAM disponible.

Approche 2. Une approche plus nuancée

Cette approche est basée sur une compréhension plus détaillée des éléments internes du pool de mémoire tampon InnoDB et de ses interactions, qui est très bien décrite dans le livre High Performance MySQL.

Regardons la méthode suivante pour calculer la taille du pool de mémoire tampon InnoDB.

  1. Commencez avec la RAM totale disponible.
  2. Soustraire le montant approprié pour les besoins du système d'exploitation.
  3. Soustraire la quantité appropriée pour tous les besoins MySQL (comme divers tampons MySQL, tables temporaires, pools de connexions et tampons liés à la réplication).
  4. Divisez le résultat par 105 %, qui est une approximation de la surcharge nécessaire pour gérer le pool de mémoire tampon lui-même.

Par exemple, examinons un système avec 192 Go de RAM utilisant uniquement InnoDB et ayant une taille totale de fichier journal d'environ 4 Go. Nous pouvons utiliser une règle telle que "maximum de 2 Go ou 5% de la RAM totale" pour l'allocation des besoins du système d'exploitation, comme recommandé dans le livre ci-dessus, ce qui correspond à environ 9,6 Go. Ensuite, nous allouerons également environ 4 Go pour d'autres besoins MySQL, en tenant principalement compte de la taille du fichier journal. Cette méthode génère environ 170 Go pour la taille de notre pool de mémoire tampon InnoDB, soit environ 88,5 % d'utilisation de la taille de RAM disponible.

Bien que nous ayons utilisé la règle "maximum de 2 Go ou 5 % de la RAM totale" pour calculer notre allocation de mémoire pour les besoins du système d'exploitation ci-dessus, la même règle ne fonctionne pas très bien dans tous les cas , spécifiquement pour les systèmes avec des RAM de taille moyenne entre 2 Go et 32 ​​Go. Par exemple, dans un système avec 3 Go de RAM, allouer 2 Go aux besoins du système d'exploitation ne laisse pas grand-chose pour le pool de mémoire tampon InnoDB, tandis qu'allouer 5 % de RAM est tout simplement trop peu pour les besoins de notre système d'exploitation.

Alors, affinons la règle d'allocation du système d'exploitation ci-dessus et examinons la méthode de calcul InnoDB dans différentes configurations de RAM :

Pour les systèmes avec une RAM de petite taille (<=1 Go)

Pour les systèmes fonctionnant avec moins de 1 Go de RAM, il est préférable d'utiliser la valeur de configuration MySQL par défaut de 128 Mo pour la taille du pool de mémoire tampon InnoDB.

Pour les systèmes dotés d'une RAM de taille moyenne (1 Go à 32 Go)

En considérant le cas des systèmes avec une taille de RAM de 1 Go à 32 Go, nous pouvons calculer les besoins du système d'exploitation à l'aide de cette heuristique approximative :

256 Mo + 256 * log2 (taille de la RAM en Go)

La rationalisation ici est que, pour les configurations à faible RAM, nous commençons avec une valeur de base de 256 Mo pour les besoins du système d'exploitation et augmentons cette allocation sur une échelle logarithmique comme la quantité de RAM augmente. De cette façon, nous pouvons trouver une formule déterministe pour allouer de la RAM aux besoins de notre système d'exploitation. Nous allouerons également la même quantité de mémoire pour nos autres besoins MySQL. Par exemple, dans un système avec 3 Go de RAM, nous allouerions une allocation équitable de 660 Mo pour les besoins du système d'exploitation et 660 Mo supplémentaires pour les autres besoins de MySQL, ce qui donnerait une valeur d'environ 1,6 Go pour la taille de notre pool de mémoire tampon InnoDB.

Pour les systèmes avec une RAM de taille supérieure (> 32 Go)

Pour les systèmes avec des tailles de RAM supérieures à 32 Go, nous revenons au calcul des besoins du système d'exploitation à 5 % de la taille de notre RAM système, et le même montant pour MySQL autres besoins. Ainsi, pour un système avec une taille de RAM de 192 Go, notre méthode atterrira à environ 165 Go pour la taille du pool de mémoire tampon InnoDB, ce qui est encore une fois une valeur optimale à utiliser.

Calculateur de taille de pool de tampons InnoDB

Calculez la valeur optimale pour n'importe quelle taille de RAM :





Calculateur de taille de pool de tampons InnoDB - Calculez le nombre optimal pour n'importe quelle taille de RAM systèmeClick To Tweet

Tracé de la taille du pool de tampons InnoDB pour différentes tailles de RAM

Mise en garde pour les calculs de taille de pool de tampons InnoDB

Les considérations de cet article de blog concernent les systèmes Linux dédiés à MySQL. Pour les systèmes Windows ou les systèmes qui exécutent plusieurs applications avec MySQL, ces observations peuvent être inexactes. Il est également important de noter que, bien que nous puissions utiliser ces outils comme références, il faut vraiment une bonne expérience, une expérimentation, une surveillance continue et un réglage fin pour obtenir le bon dimensionnement pour votre innodb_buffer_pool_size.