Maison > base de données > tutoriel mysql > Pourquoi mes performances InnoDB INSERT sont-elles tellement plus lentes que celles de MyISAM ?

Pourquoi mes performances InnoDB INSERT sont-elles tellement plus lentes que celles de MyISAM ?

DDD
Libérer: 2024-12-03 05:30:20
original
228 Les gens l'ont consulté

Why is My InnoDB INSERT Performance So Much Slower Than MyISAM?

Problème de performances avec les opérations d'insertion MySQL InnoDB

Introduction

Insertion de données dans des tables MySQL à l'aide le moteur InnoDB peut, dans certains scénarios, prendre beaucoup plus de temps que prévu. Cet article répond à ce problème de performances et propose une solution.

Question clé

Pourquoi l'insertion de données dans les tables MySQL InnoDB est-elle excessivement lente ?

Analyse

Le script de test fourni illustre une forte disparité dans les performances d'insertion entre MyISAM et Moteurs de stockage InnoDB. MyISAM réalise l'insertion d'un million de lignes en 6 secondes environ, tandis qu'InnoDB nécessite plus de 3 400 secondes pour la même tâche.

Explication

La principale raison de cet écart de performances réside dans les différences fondamentales de conception entre MyISAM et InnoDB. MyISAM ne prend pas en charge les transactions, ce qui lui permet d'insérer des données plus efficacement. En revanche, InnoDB applique l'intégrité des transactions, nécessitant une opération de validation après chaque instruction. Par défaut, InnoDB effectue un vidage du journal sur le disque après chaque insertion, ce qui entraîne une surcharge de performances importante.

Solution

Pour atténuer ce problème de performances, il est crucial d'exploiter Capacités de gestion des transactions d'InnoDB efficaces. En enfermant les instructions d'insertion dans une transaction explicite, nous pouvons réduire la fréquence des écritures sur disque et améliorer considérablement la vitesse d'insertion.

Pour y parvenir, exécutez l'instruction suivante avant de lancer la boucle d'insertion :

START TRANSACTION
Copier après la connexion

Après avoir terminé les opérations d'insertion, validez la transaction en utilisant l'instruction suivante :

COMMIT
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal