Das System weist ein Leistungsproblem auf

Die Replikationsleistung kann in Bezug auf die folgenden fünf Dimensionen gemessen werden:

  • Latenzzeit: die erforderliche Zeit für die Weitergabe einer Datenänderung zwischen den Knoten in einer Replikationstopologie.

  • Durchsatz: der Umfang der Replikationsaktivität, die ein System unterstützt (gemessen in Befehlen, die in einem Zeitraum übermittelt werden).

  • Parallelität: die Anzahl der Replikationsprozesse, die in einem System gleichzeitig aktiv sein können.

  • Dauer der Synchronisierung: der Zeitraum, bis eine bestimmte Synchronisierung abgeschlossen ist.

  • Ressourcenverbrauch: die Hardware- und Netzwerkressourcen, die im Rahmen der Replikationsverarbeitung verwendet werden.

Latenzzeit und Durchsatz sind für die Transaktionsreplikation am wichtigsten, da Systeme, die auf der Transaktionsreplikation basieren, in der Regel eine geringe Latenzzeit und einen hohen Durchsatz erfordern. Parallelität und Dauer der Synchronisierung sind bei der Mergereplikation am wichtigsten, da Systeme, die auf der Mergereplikation basieren, häufig eine große Zahl Abonnenten aufweisen und bei einem Verleger eine beträchtliche Zahl gleichzeitiger Synchronisierungen mit diesen Abonnenten erfolgen kann.

Nach dem Konfigurieren der Replikation sollten Sie Leistungsgrundlagen entwickeln, die es Ihnen ermöglichen, das Replikationsverhalten bei einer typischen Auslastung der Anwendungen und Topologie zu ermitteln. Verwenden Sie den Replikationsmonitor und den Systemmonitor, um die typischen Zahlen für die oben aufgeführten fünf Dimensionen der Replikationsleistung zu ermitteln: Nachdem Sie die Zahlen der Leistungsgrundlagen ermittelt haben, legen Sie im Replikationsmonitor Schwellenwerte und Warnungen fest. Weitere Informationen finden Sie unter Überwachen der Leistung mit dem Replikationsmonitor, Festlegen von Schwellenwerten und Warnungen im Replikationsmonitor und Verwenden von Warnungen für Ereignisse des Replikations-Agents. Weitere Informationen zu den Problembehandlungstools für die Replikationsleistung finden Sie unter Tools zur Problembehandlung (Replikation).

Erklärung und Benutzeraktion

Die Replikationsleistung wird von den folgenden Faktoren beeinflusst:

  • Server- und Netzwerkhardware

  • Datenbankentwurf

  • Verteilerkonfiguration

  • Entwurf und Optionen von Veröffentlichungen

  • Entwurf und Verwendung von Filtern

  • Abonnementoptionen

  • Snapshotoptionen

  • Agentparameter

  • Verwaltung

Sollte ein Leistungsproblem auftreten, lesen Sie die Vorschläge in den folgenden Abschnitten durch. Ändern Sie dann die entsprechenden Bereiche, die sich auf die von Ihnen festgestellten Probleme beziehen. Beispiel:

  • Sie stellen bei der Verwendung der Mergereplikation im Replikationsmonitor fest, dass ein einzelner gefilterter Artikel einen erheblichen Prozentsatz der Synchronisierungszeit beansprucht. Überprüfen Sie in diesem Fall, ob Sie die richtigen Filteroptionen verwenden und ob die Spalten im Filter indiziert sind.

  • Sie stellen bei der Verwendung der Transaktionsreplikation eine hohe Latenzzeit beim Ausführen von Batchoperationen für veröffentlichte Tabellen fest. Replizieren Sie in diesem Fall das Ausführen einer gespeicherten Prozedur, mit der die Batchoperation auf dem Abonnenten ausgeführt wird.

Alle Replikationstypen

Berücksichtigen Sie die folgenden Bereiche bei allen Replikationstypen. Weitere Informationen finden Sie unter Verbessern der allgemeinen Replikationsleistung.

  • Server und Netzwerk

    • Legen Sie das Minimum und das Maximum für den Arbeitsspeicher fest, der Microsoft SQL Server Database Engine (Datenbankmodul) zugeordnet ist.

    • Stellen Sie eine ordnungsgemäße Zuordnung der Datenbankdateien und Protokolldateien sicher. Verwenden Sie ein separates Laufwerk für das Transaktionsprotokoll für alle an der Replikation beteiligten Datenbanken.

    • Fügen Sie gegebenenfalls Arbeitsspeicher für die Server hinzu, die für die Replikation verwendet werden, insbesondere für den Verteiler.

    • Verwenden Sie Computer mit mehreren Prozessoren.

    • Verwenden Sie ein schnelles Netzwerk. Geben Sie bei einem langsamen Netzwerk geeignete Netzwerkeinstellungen und Agentparameter an. Weitere Informationen finden Sie unter Probleme aufgrund eines langsamen Netzwerks.

  • Datenbankentwurf

    • Beachten Sie die bewährten Methoden für den Datenbankentwurf.

    • Legen Sie gegebenenfalls die Datenbankoption READ_COMMITTED_SNAPSHOT fest.

    • Gehen Sie bei der Anwendungslogik in Triggern mit Bedacht vor.

    • Schränken Sie die Verwendung des LOB-Datentyps (Large OBjects) ein.

  • Entwurf und Optionen von Veröffentlichungen

    • Veröffentlichen Sie nur die erforderlichen Daten.

    • Minimieren Sie Konflikte über den Veröffentlichungsentwurf und das Anwendungsverhalten.

    • Verwenden Sie Zeilenfilter mit Umsicht.

    • Reduzieren Sie die Meldungsstufen von Replikations-Agents, außer während des ersten Testens, Überwachens oder Debuggens.

  • Abonnementoptionen

    • Verwenden Sie Pullabonnements, wenn sehr viele Abonnenten vorhanden sind.

    • Initialisieren Sie gegebenenfalls das Abonnement erneut, wenn Abonnenten zu stark in Verzug geraten sind.

  • Snapshotoptionen

    • Führen Sie den Snapshot-Agent nur bei Bedarf und außerhalb der Spitzenzeiten aus.

    • Verwenden Sie einen einzigen Snapshotordner für eine Veröffentlichung.

    • Speichern Sie den Snapshotordner auf einem lokalen Laufwerk des Verteilers, das nicht zum Speichern von Datenbank- oder Protokolldateien verwendet wird.

    • Wenn Sie die Abonnementdatenbank auf dem Abonnenten erstellen, sollten Sie das einfache oder das massenprotokollierte Wiederherstellungsmodell angeben.

    • Verwenden Sie bei Netzwerken mit niedrigen Bandbreiten den alternativen Snapshotordner und komprimierte Snapshots auf Wechselmedien.

    • Verwenden Sie den –MaxBCPThreads-Parameter des Snapshot-Agents, Merge-Agents und Verteilungs-Agents. Verwenden Sie den –UseInprocLoader-Parameter des Verteilungs-Agents und des Merge-Agents.

Transaktionsreplikation

Berücksichtigen Sie die folgenden Bereiche bei der Transaktionsreplikation. Weitere Informationen finden Sie unter Verbessern der Leistung der Transaktionsreplikation.

  • Datenbankentwurf

    • Minimieren Sie den Transaktionsumfang in Ihrem Datenbankentwurf.
  • Verteilerkonfiguration

    • Konfigurieren Sie den Verteiler auf einem dedizierten Server.

    • Legen Sie eine angemessene Größe für die Verteilungsdatenbank fest.

  • Entwurf und Optionen von Veröffentlichungen

    • Replizieren Sie die Ausführung gespeicherter Prozeduren bei der Durchführung von Batchaktualisierungen für veröffentlichte Tabellen.

    • Verteilen Sie Artikel auf mehrere Veröffentlichungen.

  • Abonnementoptionen

    • Wenn Sie auf einem einzigen Verleger über mehrere Veröffentlichungen verfügen, verwenden Sie unabhängige Agents anstelle freigegebener Agents (das Standardverhalten).

    • Führen Sie Agents fortlaufend statt häufig aus.

  • Agentparameter

    • Verwenden Sie den –MaxCmdsInTran-Parameter für den Protokolllese-Agent.

    • Verwenden Sie den –SubscriptionStreams-Parameter für den Verteilungs-Agent.

    • Erhöhen Sie den Wert des -ReadBatchSize-Parameters für den Protokolllese-Agent.

    • Erhöhen Sie den Wert des -CommitBatchSize-Parameters für den Verteilungs-Agent.

    • Verringern Sie den Wert des -PollingInterval-Parameters für den Protokolllese-Agent.

Mergereplikation

Berücksichtigen Sie die folgenden Bereiche bei der Mergereplikation. Weitere Informationen finden Sie unter Verbessern der Leistung der Mergereplikation.

  • Datenbankentwurf

    • Indizieren Sie in Zeilenfiltern und Verknüpfungsfiltern verwendete Spalten.

    • Übernormalisieren Sie gegebenenfalls Tabellen, die LOB-Datentypen (Large Objects) enthalten.

  • Veröffentlichungsentwurf

    • Verwenden Sie einen Veröffentlichungskompatibilitätsgrad von 90RTM (SQL Server 2005) oder eine höhere Version.

    • Verwenden Sie geeignete Einstellungen für die Publiktionsbeibehaltung.

    • Verwenden Sie nur Artikel zum Herunterladen für Tabellen, die nur auf dem Verleger geändert werden.

  • Entwurf und Verwendung von Filtern

    • Beschränken Sie die Komplexität von Zeilenfilterklauseln.

    • Verwenden Sie vorberechnete Partitionen mit parametrisierten Filtern (dieses Feature wird standardmäßig verwendet).

    • Verwenden Sie nicht überlappende Partitionen, wenn Daten gefiltert, jedoch nicht für die Benutzer freigegeben sind.

    • Erstellen Sie keine komplexen Verknüpfungsfilterhierarchien.

    • Legen Sie die Option join_unique_key auf 1 fest, wenn die Logik das zulässt.

  • Überlegungen zu vorausberechneten Partitionen

    • Entwerfen Sie die Anwendung sorgfältig, wenn in Batches viele Datenänderungen enthalten sind. Änderungen an Daten in der übergeordneten Tabelle in einem Verknüpfungsfilter müssen vor den entsprechenden Änderungen an den untergeordneten Tabellen vorgenommen werden.

    • Reduzieren Sie die Anzahl der Änderungen in einem Batch, und führen Sie den Merge-Agent zwischen Batches aus, wenn in Batches viele Datenänderungen enthalten sind. Wenn dies nicht möglich ist, erhöhen Sie den Wert von generation_leveling_threshold für die Veröffentlichung.

  • Überlegungen zu Abonnements

    • Staffeln Sie die Synchronisierungszeitpläne für Abonnements.
  • Agentparameter

    • Wenn ein Abonnement über eine schnelle Verbindung synchronisiert wird und Änderungen vom Verleger und Abonnenten gesendet werden, verwenden Sie den –ParallelUploadDownload-Parameter für den Merge-Agent.
  • Snapshotoptionen

    • Erstellen Sie bei großen Tabellen eine ROWGUIDCOL-Spalte, bevor Sie den Anfangssnapshots erstellen.

    • Generieren Sie Snapshots im Voraus und/oder ermöglichen Sie es Abonnenten, beim erstmaligen Synchronisieren die Snapshotgenerierung und -anwendung anzufordern.

  • Verwaltung

    • Indizieren Sie Systemtabellen für die Mergereplikation gelegentlich neu.

    • Überwachen Sie die Synchronisierungsleistung mithilfe der Registerkarte Synchronisierungsverlauf im Replikationsmonitor.

Siehe auch

Konzepte