Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Réglage des charges de travail d'écriture
L'implémentation de l'équilibrage de charge et la libération de l'instance d'enregistreur aideront votre charge de travail d'écriture à fournir de meilleures performances en cas de pics élevés. Pour obtenir de meilleures performances d'écriture en cas de simultanéité élevée, suivez ces étapes supplémentaires.
Déplacer l'intégrité référentielle dans la couche applicative
Bien que les contrôles de l'intégrité référentielle soient importants, l'hyperéchelle peut nuire à votre charge. Pour chaque écriture, des analyses supplémentaires doivent être effectuées avant que l'écriture elle-même ne soit exécutée, ce qui donne lieu à de mauvaises performances. Si votre application nécessite des contrôles d'intégrité stricts, intégrez-les dans la couche d'application pour éviter qu'ils ne limitent vos écritures.
Éviter d'utiliser des clés primaires lourdes
Faites en sorte que vos clés primaires restent légères. Le moteur de stockage InnoDB ajoute la clé primaire à tous les autres index que vous créez dans votre table. Lorsque votre clé primaire est volumineuse, la taille de l'index en sera affectée. Le stockage et la récupération des pages de données seront ralentis si la clé primaire est assez volumineuse. L'utilisation d'identifiants uniques universels comme clés primaires en est un exemple courant. Il ne s'agit pas d'une bonne approche si vous ciblez les performances dans un environnement à l'hyperéchelle.
Utiliser l'échange de partitions pour charger des données dans des tables partitionnées
Si vous écrivez de grands jeux de données dans des tables partitionnées, la combinaison de LOAD DATA FROM S3 et d'échange de partitions
Supprimez les index inutilisés
InnoDB
S'assurer que les anciennes versions de ligne sont correctement purgées
Dans l'implémentation du contrôle de simultanéité multiversion (MVCC) d'InnoDB, lorsqu'un enregistrement est modifié, la version actuelle (ancienne) des données modifiées est d'abord enregistrée sous la forme d'un enregistrement d'annulation dans un journal d'annulation. Une valeur de longueur de la liste d'historique (HLL) croissante indique que les threads de récupérateur de mémoire d'InnoDB (threads de purge) ne suivent pas le rythme de la charge de travail d'écriture ou que la purge est bloquée par une requête ou une transaction de longue durée. Lorsque le récupérateur de mémoire est bloqué ou retardé, la base de données peut développer un retard de purge important qui peut affecter négativement les performances des requêtes. Vous pouvez utiliser les recommandations suivantes pour optimiser le processus de purge.
-
Limitez le volume de transactions.
-
Pour les requêtes de lecture, utilisez le niveau d'isolation READ COMMITTED.
-
Augmentez le nombre de threads de purge (innodb_purge_threads
et innodb_purge_batch_size ). Notez que le réglage de ces paramètres nécessite un redémarrage. -
Surveillez régulièrement la HLL et résolvez les problèmes de charge de travail qui empêchent la progression du récupérateur de mémoire.
S'assurer que la journalisation n'entraîne pas de conflits supplémentaires
Le journal des requêtes générales journalise les connexions et les déconnexions des clients, ainsi que toutes les instructions reçues par le serveur dans l'ordre de leur réception. Lorsqu'elle est activée, la journalisation est synchrone, ce qui peut entraîner une réduction importante des performances sur un système occupé. À moins que cela ne soit nécessaire, nous vous recommandons de désactiver le journal général.
Le journal des requêtes lentes enregistre les instructions qui ont pris plus de temps que le nombre de secondes d'exécution long_query_time