Maison > Article > base de données > Comment indexer une énorme table de production MySQL sans interrompre les opérations ?
Énoncé du problème :
Création d'un index sur une grande production MySQL table peut potentiellement provoquer des verrouillages de la base de données. Cela présente un défi pour garantir un accès ininterrompu à la base de données pendant le processus d'indexation.
Solution :
Depuis MySQL 5.6, la base de données prend en charge les mises à jour incrémentielles d'index pendant les opérations. Cela signifie que la création ou la suppression d'index peut avoir lieu simultanément avec les lectures et les écritures, réduisant ainsi le risque de blocages et garantissant l'intégrité des données.
Dans MySQL 5.5 et versions antérieures, les opérations UPDATE sur une table avec une mise à jour d'index active rencontrera des blocs. Cela peut avoir un impact significatif sur les performances et provoquer des pannes.
Pour éviter ces blocages, envisagez l'approche suivante :
1. Serveurs maîtres circulaires :
2. Changement de schéma en ligne de Percona :
3. Promotion de réplique en lecture RDS :
Si vous utilisez le RDS d'Amazon, vous pouvez créer une réplique en lecture seule et y effectuer la mise à jour de l'index. Une fois terminé, faites la promotion de la réplique pour qu'elle devienne le nouveau maître. Cette approche simplifie le processus en automatisant le basculement et la migration des données.
Remarque : Cette approche nécessite le redémarrage de l'application pour se reconnecter à l'instance de base de données mise à jour.
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!