Nous avons une énorme base de données de production, sa taille est d'environ 300 Go. Existe-t-il une approche pour améliorer les performances d'une requête de suppression? À l'heure actuelle, la vitesse de suppression est comprise entre 1 et 10 000 par minute, c'est très lent pour nous.
Si vous essayez de supprimer un grand nombre de lignes dans une seule instruction, il est probable que vous attendiez l'activité du journal. Afin que vous puissiez:
TRUNCATE
ou DROP
/CREATE
.SELECT INTO
pour placer les données que vous souhaitez conserver dans une autre table, puis TRUNCATE
, puis reculez la petite partie. (Ou supprimez simplement l'ancienne table, renommez la nouvelle et réappliquez les contraintes/autorisations, etc.)CHECKPOINT
pour effacer le journal au lieu de prendre des sauvegardes de journal, mais vous devez être sûr de le réinitialiser et de prendre une nouvelle sauvegarde complète pour relancez la chaîne de journaux.Il y a un indice, mais quelle version utilisez-vous? S'agit-il d'une édition entreprise? En tous cas:
Ajoutez des détails, lorsque vous travaillez avec une grande base de données, il n'y a pas une seule réponse valide.
Vous devriez essayer de les supprimer morceau par morceau, probablement en supprimant en boucle, chaque itération de suppression est sa propre transaction, puis en effaçant le journal à la fin de chaque itération de boucle.
En outre, vous devrez trouver le nombre que vous allez utiliser comme valeur dans le bloc pour supprimer les enregistrements. Cela nécessite un test approfondi, ce serait mieux si vous pouvez d'abord tester la valeur du bloc dans UAT.
Sur la façon de procéder, vous renvoie à Briser les opérations de suppression de grande taille en morceaux
Ajout de quelques points supplémentaires ...
tablock
.Pour obtenir plus d'aide, publiez la requête que vous utilisez, les informations de la table et toutes les informations de blocage.
la suppression peut être lente si la grande table a une clé étrangère récursive.
si c'est le cas, trouvez le moment opportun, désactivez les services dépendants, désactivez la clé étrangère récursive, effectuez une suppression massive, puis restaurez la clé étrangère.