Cette question peut probablement aussi être posée sur StackOverflow, mais je vais essayer ici d'abord ...
Les performances des instructions INSERT et UPDATE dans notre base de données semblent se dégrader et entraîner de mauvaises performances dans notre application Web.
Les tables sont InnoDB et l'application utilise des transactions. Y a-t-il des ajustements faciles à faire pour accélérer les choses?
Je pense que nous pouvons voir des problèmes de verrouillage, comment puis-je le savoir?
mysql
performance
innodb
mmattax
la source
la source
Réponses:
Vérifiez si votre matériel et votre système d'exploitation sont correctement configurés et réglés:
Vérifiez si votre instance MySQL / InnoDB est correctement réglée:
Load data infile
la commande est beaucoup plus rapide pour les séries d'inserts.select count(*) from table;
est beaucoup plus lent pour innodb que pour myisam.Quelques liens utiles:
la source
Avec la configuration par défaut innoDB, vous serez limité à la vitesse à laquelle vous pouvez écrire et vider les transactions sur le disque. Si vous pouvez gérer la perte d'un petit ACID, essayez avec innodb_flush_log_at_trx_commit. Définissez sur 0 pour écrire et vider le journal sur le disque toutes les secondes. Défini sur 1 (par défaut) pour écrire et vider à chaque validation. Définissez-le sur 2 pour écrire dans le fichier journal après chaque validation, mais ne vider qu'une seule fois par seconde.
Si vous pouvez gérer la perte de 1 de transactions, cela peut être un excellent moyen d'améliorer considérablement les performances d'écriture.
Faites également attention à ce que font vos disques. RAID 10> RAID 5 pour les écritures au prix d'un disque supplémentaire.
la source
Les problèmes de verrouillage seront examinés par les états de connexion dans
show full processlist;
Lisez la
my.cnf
documentation MySQL et. Les options de configuration sont très bien documentées.D'une manière générale, vous souhaitez que le plus possible de traitement en mémoire. Pour l'optimisation des requêtes, cela signifie éviter les tables temporaires. Application correcte des index.
Le réglage va être spécifique à votre moteur de base de données préféré et à votre architecture d'application. Il existe des ressources substantielles préexistant à une recherche sur Internet.
la source
L'activation des moniteurs Innodb peut aider à identifier les causes des verrous et des blocages:
AFFICHER LE STATUT INNODB DU MOTEUR et les moniteurs InnoDB
la source
InnoDB est un assez bon moteur. Cependant, il dépend fortement d'être «réglé». Une chose est que si vos insertions ne sont pas dans l'ordre d'augmentation des clés primaires, innoDB peut prendre un peu plus de temps que MyISAM. Cela peut facilement être surmonté en définissant une taille innodb_buffer_pool_size plus élevée. Ma suggestion est de le définir à 60-70% de votre RAM totale. J'exécute 4 de ces serveurs en production maintenant, en insérant environ 3,5 millions de lignes par minute. Ils ont déjà près de 3 téraoctets. InnoDB cela devait être, à cause des insertions hautement simultanées. Il existe d'autres moyens d'accélérer les insertions. Et j'en ai comparé certains.
la source
Comment résoudre les problèmes d'insertion et de mise à jour des performances dans MySQL dans l'application Web simplement en désactivant les modifications de validation automatique et de validation une fois en Java. Comme suggéré dans la documentation mysql.
Documents MySQL
la source