Maison > base de données > tutoriel mysql > Comment puis-je mettre à jour rapidement 120 millions d'enregistrements dans une table de base de données ?

Comment puis-je mettre à jour rapidement 120 millions d'enregistrements dans une table de base de données ?

Mary-Kate Olsen
Libérer: 2025-01-04 17:26:41
original
907 Les gens l'ont consulté

How Can I Quickly Update 120 Million Records in a Database Table?

Conseils pour mettre à jour rapidement 120 millions d'enregistrements

Rencontrer des problèmes de performances lors de la tentative de mise à jour d'une table contenant 120 millions d'enregistrements est un défi courant. L'approche traditionnelle consistant à utiliser une instruction UPDATE peut être d'une lenteur prohibitive, nécessitant des heures, voire des jours.

Au lieu de tenter une mise à jour directe, envisagez de remplir une seconde table à l'aide d'une instruction SELECT. Cette approche offre des avantages significatifs en termes de performances, comme illustré ci-dessous :

Cas simple :

  • Pour les tables sans index clusterisé et pendant les périodes de faible DML activité :

    • Exécuter : SELECT *, new_col = 1 INTO clone.BaseTable FROM dbo.BaseTable
    • Recréez des index, des contraintes, etc. sur la nouvelle table
    • Changez l'ancienne et la nouvelle table en utilisant ALTER SCHEMA ... TRANSFER
    • Supprimez l'ancienne table

Non simple Cas :

  • Recréez la BaseTable avec le même nom sous un schéma différent (clone.BaseTable)
  • Incluez l'index clusterisé, les colonnes d'identité, les colonnes calculées et le nouveau Colonne INT
  • Exclure déclencheurs, contraintes de clé étrangère, non clusterisés index et vérifier les contraintes
  • Tester l'insertion avec un petit nombre de lignes
  • Tronquer la table clone et effectuer l'insertion complète
  • Recréer toutes les contraintes non clusterisées, index, et déclencheurs
  • Déplacez dbo.BaseTable vers un schéma de sauvegarde et clone.BaseTable vers le dbo schéma

En évitant les mises à jour directes et en tirant parti de la puissance des instructions SELECT, vous pouvez réduire considérablement le temps de mise à jour, ce qui permet de mettre à jour efficacement même des tables volumineuses.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal