2010-12-06 2 views
10

Ich habe gelesen, dass das Aktivieren von Change Data Capture offensichtlich Auswirkungen auf die Datenbankleistung hat. Würde sich dieser Leistungsverlust nur auf die Tabellen auswirken, für die CDC aktiviert ist oder alle Aktionen in der Datenbank beeinflussen würde? In meiner Situation verwende ich SSIS und habe eine große Menge an Daten in eine Staging-Datenbank verschoben. Ich habe auch einige Nachschlagetabellen im System, die für Transformationen verwendet werden. Ich hoffe, CDC als Mittel zu verwenden, Änderungen nur an diesen Referenztabellen (nicht an den importierten Daten) zu überwachen. Die wichtigsten Abfragen, die ich als Teil des ETLs ausführe, greifen auf diese Referenztabellen zu, ändern sie aber nicht, also versuche ich herauszufinden, ob es noch einen spürbaren Leistungseinbruch geben wird?Ist der Leistungsverlust bei der Datenerfassung auf CDC-aktivierte Tabellen beschränkt?

Dank

Antwort

25

Die Antwort auf diese Frage wäre sowohl Ja als auch Nein.

Nein, weil

Wenn eine Tabelle für Change Data Capture aktiviert ist, wird eine zugehörige Capture Instanz geschaffen, um die Verbreitung der Änderungsdaten in die Quelltabelle zu unterstützen. Die Erfassungsinstanz besteht aus einer Änderungstabelle und bis zu zwei Abfragefunktionen.

Untracked Tabellen scheinen nicht nicht in Tracking-Daten einbezogen werden.

Ja, weil

Die Quelle der Änderungsdaten für Änderung Datenerfassung der Server Transaktionsprotokoll SQL ist. Da Einfügungen, Aktualisierungen, und Löschungen auf verfolgte Quelltabellen angewendet werden, werden Einträge, die beschreiben, diese Änderungen dem Protokoll hinzugefügt. Das Protokoll dient als Eingabe für die Änderung Datenerfassungserfassungsprozess. Diese liest das Protokoll und fügt Informationen über Änderungen an der verknüpften Änderungstabelle der verfolgten Tabelle hinzu.

Als Quelle für Änderungen kommen aus dem Transaktionsprotokoll, die Verbreitung der Veränderungen der Aufzeichnungsinstanzen erfordert das Transaktionsprotokoll (Disclaimer: meine Interpretation der Dinge) zu lesen und interpretieren. Wenn Sie nur CDC aktivieren, wirkt sich dies auf die Leistung Ihrer gesamten Datenbank aus.

Empfehlungen

Lagerung:

  • Wenn Change Data Capture-Architektur planen, eine deutliche Erhöhung der Protokollgröße nehmen und melden Band I/O-Operationen berücksichtigt.
  • Sie können eine Dateigruppe in sys.sp_cdc_enable_table angeben.
  • Überlegen Sie, die Standarddateigruppe für die Datenbank zu ändern, bevor Sie sys.sp_cdc_enble_db ausführen, um die Metadaten für die Datenerfassung und insbesondere cdc zu ändern.lsn_time_mappings befinden sich in einer anderen Dateigruppe als PRIMARY.

Workload Verhalten:

  • Try-Szenarien zu vermeiden, in denen eine Reihe aktualisiert, nachdem Einsatz sofort werden muss.
  • Versuchen Sie die Verwendung der Änderungsdatenerfassung zu vermeiden, um Änderungen an Tabellen mit häufigen großen Aktualisierungstransaktionen zu erfassen.

Change Data Capture-Parameter:

  • immer die Liste der Spalten dazu, die Aufzeichnung erfasst durch Datenänderung nur auf die Spalten müssen Sie wirklich verfolgen.
  • Wenn Sie keine Unterstützung für Nettoänderungen benötigen, setzen Sie @ auf 0.
  • Verwenden Sie, um festzustellen, ob die Änderungsdatenerfassung mit Ihrer Arbeitslast Schritt halten kann.
  • Wenn die Änderungsdatenerfassung nicht mit Ihrer Arbeitslast Schritt halten kann, ändern Sie die Scanauftragsparameter, und starten Sie den Scanauftrag erneut.

Fazit
Wenn der Server momentan keine Probleme hat mit seiner Ladung zu halten, ich bezweifle sehr, werden Sie keine Performance-Probleme feststellen, Tabellen ermöglicht CDC für selten geändert.

Quellen

+1

sehr gut verdient explained..must eine upvote ... –

Verwandte Themen