2010-12-06 21 views
10

J'ai lu que l'activation de Change Data Capture a évidemment un impact sur les performances de la base de données. Cette perte de performance affectait uniquement les tables activées par CDC ou affectait toutes les actions de la base de donnéesLa perte de performance de capture de données de modification est-elle limitée aux tables compatibles CDC?

Dans mon cas, j'utilise SSIS et une grande quantité de données entre et sort d'une base de données intermédiaire. J'ai aussi quelques tables de recherche dans le système qui sont utilisées pour les transformations. J'espère utiliser CDC comme un moyen d'auditer les changements à ces tables de référence seulement (pas les données importées). Les principales requêtes que j'exécute dans le cadre de l'ETL accèdent à ces tables de référence, mais ne les modifient pas. J'essaie donc de déterminer s'il y aura toujours un impact perceptible sur les performances.

Merci

Répondre

25

La réponse à cette question serait à la fois oui et non.

Non, parce que

Lorsqu'une table est activée pour la saisie des données de changement, est créé une capture instance associée à soutenir la diffusion des données de changement dans la table source. L'instance de capture consiste en une table de modification et jusqu'à deux fonctions de requête.

Les tables non suivies ne semblent pas être impliquées dans le suivi des données.

Oui parce

La source des données de changement pour la saisie de données est le changement SQL Server journal des transactions. Comme les insertions, les mises à jour, les et les suppressions sont appliquées aux tables source suivies, les entrées qui décrivent ces modifications sont ajoutées au journal. Le journal sert d'entrée au processus de capture de capture de données de modification . Ce lit le journal et ajoute des informations à propos des modifications apportées à la table de modifications associée à la table suivie.

Comme la source de changements proviennent du journal des transactions, la diffusion des changements nécessite les instances de capture à lire et à interpréter le journal des transactions (disclaimer: mon interprétation des choses). L'activation simple de CDC a un impact sur les performances de l'ensemble de votre base de données.

Recommandations

Stockage:

  • Lors de la planification changement architecture de saisie des données, prendre une augmentation significative de la taille du journal et le volume log des opérations d'E/S en compte.
  • Envisagez de spécifier un groupe de fichiers dans sys.sp_cdc_enable_table.
  • Envisagez de modifier le groupe de fichiers par défaut pour la base de données avant d'exécuter sys.sp_cdc_enble_db afin de modifier les métadonnées de capture de données et en particulier cdc.lsn_time_mappings se trouve dans un groupe de fichiers différent de PRIMARY.

comportement Charge de travail:

  • Essayez d'éviter les scénarios dans lesquels une ligne doit être mis à jour immédiatement après insertion. Essayez d'éviter d'utiliser la capture de données modifiées pour capturer les modifications apportées aux tables qui ont des transactions de mise à jour fréquentes et fréquentes.

Modifier les paramètres de capture de données:

  • On doit toujours réduire la liste des colonnes capturées par capture de données modifiées pour que les colonnes que vous avez vraiment besoin de suivre.
  • Si vous ne souhaitez pas prendre en charge les modifications nettes, définissez @ sur 0.
  • Permet de voir si la modification de la capture de données peut suivre votre charge de travail.
  • Si la capture de données modifiées ne peut pas suivre votre charge de travail, modifiez les paramètres du travail d'analyse et redémarrez le travail d'analyse.

Conclusion
Si votre serveur a actuellement aucun problème à suivre avec sa charge, je doute fort que vous remarquerez des problèmes de performance permettant CDC pour peu fréquentes tables changé.

Sources

+1

très bien explained..must mérite une upvote ... –