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
878 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!

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
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