Optimieren von Datenbankdateigruppen
Dateieingabe-/Ausgabekonflikte (E/A) sind häufig ein einschränkender Faktor oder Engpass in einer Produktionsumgebung BizTalk Server. BizTalk Server ist eine sehr datenbankintensive Anwendung, und die SQL Server Datenbank, die von BizTalk Server verwendet wird, ist sehr datei-E/A-intensiv.
In diesem Thema wird beschrieben, wie Sie die Datei- und Dateigruppenfunktion von SQL Server optimal nutzen, um das Auftreten von Datei-E/A-Konflikten zu minimieren und die Gesamtleistung einer BizTalk Server Lösung zu verbessern.
Überblick
Bei jeder BizTalk Server Lösung treten schließlich Datei-E/A-Konflikte auf, da der Durchsatz erhöht wird. Das E/A-Subsystem oder die Speicher-Engine ist eine wichtige Komponente jeder relationalen Datenbank. Eine erfolgreiche Datenbankimplementierung bedarf in der Regel sorgfältiger Planung in den frühen Projektphasen. Bei der Planung sollten folgende Punkte berücksichtigt werden:
Welcher Datenträgertyp soll verwendet werden, beispielsweise RAID-Medien (Redundant Array of Independent Disks)?
Hier erfahren Sie, wie Sie Daten auf den Datenträgern mithilfe von Dateien und Dateigruppen aufschlüsseln. Weitere Informationen zur Verwendung von Dateien und Dateigruppen in SQL Server finden Sie unter Datenbankdateien und Dateigruppen.
Implementieren des optimalen Indexentwurfs zur Verbesserung der Leistung beim Zugriff auf Daten. Weitere Informationen zum Entwerfen von Indizes finden Sie unter Entwerfen von Indizes.
Hier erfahren Sie, wie Sie SQL Server Konfigurationsparameter für eine optimale Leistung festlegen. Weitere Informationen zum Festlegen optimaler Konfigurationsparameter für SQL Server finden Sie unter Serverkonfigurationsoptionen.
Eines der wichtigsten Entwurfsziele von BizTalk Server besteht darin, sicherzustellen, dass eine Nachricht nie verloren geht. Um die Möglichkeit des Verlusts von Nachrichten zu minimieren, werden Nachrichten häufig in die MessageBox-Datenbank geschrieben, während die Nachricht verarbeitet wird. Wenn Nachrichten von einer Orchestrierung verarbeitet werden, wird die Nachricht an jedem Persistenzpunkt in der Orchestrierung in die MessageBox-Datenbank geschrieben. Diese Persistenzpunkte bewirken, dass messageBox die Nachricht und den zugehörigen Zustand auf den physischen Datenträger schreibt. Bei höheren Durchsatz kann diese Persistenz zu erheblichen Datenträgerkonflikten führen und möglicherweise zu einem Engpass werden.
Die optimale Nutzung der Datei- und Dateigruppenfunktion in SQL Server hat sich gezeigt, um Datei-E/A-Engpässe effektiv zu beheben und die Gesamtleistung in BizTalk Server-Lösungen zu verbessern. Diese Optimierung sollte nur von einem erfahrenen SQL Server Datenbankadministrator durchgeführt werden, und erst, nachdem alle BizTalk Server Datenbanken ordnungsgemäß gesichert wurden. Diese Optimierung sollte auf allen SQL Server Computern in der BizTalk Server-Umgebung ausgeführt werden.
SQL Server Dateien und Dateigruppen können verwendet werden, um die Datenbankleistung zu verbessern, da diese Funktionalität die Erstellung einer Datenbank über mehrere Datenträger, mehrere Datenträgercontroller oder RAID-Systeme (redundantes Array unabhängiger Datenträger) ermöglicht. Wenn Ihr Computer z. B. über vier Datenträger verfügt, können Sie eine Datenbank erstellen, die drei Datendateien und eine Protokolldatei umfasst, wobei sich jede Datei auf einem anderen Datenträger befindet. Wenn auf Daten zugegriffen wird, können vier Lese-/Schreibköpfe gleichzeitig parallel auf die Daten zugreifen. Dadurch werden Datenbankvorgänge erheblich beschleunigt. Weitere Informationen zum Implementieren von Hardwarelösungen für SQL Server Datenträger finden Sie unter "Datenbankleistung" in der SQL Server-Onlinedokumentation unter https://go.microsoft.com/fwlink/?LinkID=71419.
Darüber hinaus ermöglichen Dateien und Dateigruppen die Datenplatzierung, da Tabellen in bestimmten Dateigruppen erstellt werden können. Dies verbessert die Leistung, da alle Datei-E/A-Vorgänge für eine bestimmte Tabelle auf einen bestimmten Datenträger geleitet werden können. Beispielsweise kann eine stark verwendete Tabelle in einer Dateigruppe auf einem Datenträger platziert werden, und die anderen Tabellen, auf die weniger stark zugegriffen wird, können sich auf verschiedenen Dateien in einer anderen Dateigruppe befinden, die sich auf einem zweiten Datenträger befindet.
Datei-E/A-Engpässe werden unter Engpässe auf der Datenbankebene ausführlich erläutert. Der häufigste Indikator, dass datei-E/A (Datenträger-E/A) ein Engpass ist, ist der Wert des Indikators "Physischer Datenträger: Durchschnittliche Länge der Datenträgerwarteschlange". Wenn der Wert des Indikators "Physischer Datenträger: Durchschnittliche Länge der Datenträgerwarteschlange" für einen bestimmten Datenträger auf einem der SQL Server-Instanzen größer als etwa 3 ist, ist die Datei-E/A wahrscheinlich ein Engpass.
Wenn durch das Anwenden der Datei- oder Dateigruppenoptimierung kein Datei-E/A-Engpassproblem behoben wird, kann es erforderlich sein, den Durchsatz des Datenträgersubsystems durch Hinzufügen zusätzlicher physischer oder SAN-Laufwerke zu erhöhen.
In diesem Thema wird beschrieben, wie Sie Datei- und Dateigruppenoptimierungen manuell anwenden, aber diese Optimierungen können auch in Skripts ausgeführt werden. Ein SQL-Beispielskript wird am Ende dieses Themas bereitgestellt. Es ist wichtig zu beachten, dass dieses Skript geändert werden muss, um die Datei-, Dateigruppe- und Datenträgerkonfiguration zu berücksichtigen, die von den SQL Server-Datenbanken für jede BizTalk Server Lösung verwendet wird.
Datenbanken, die mit einer Standardkonfiguration für BizTalk Server erstellt wurden
Je nachdem, welche Features beim Konfigurieren BizTalk Server aktiviert sind, können in SQL Server bis zu 13 verschiedene Datenbanken erstellt werden, und alle diese Datenbanken werden in der Standarddateigruppe erstellt. Die Standarddateigruppe für SQL Server ist die PRIMARY-Dateigruppe, es sei denn, die Standarddateigruppe wird mithilfe des BEFEHLS ALTER DATABASE geändert. In der folgenden Tabelle sind die Datenbanken aufgeführt, die in SQL Server erstellt werden, wenn beim Konfigurieren von BizTalk Server alle Features aktiviert sind.
BizTalk Server-Datenbanken
Datenbank | Standarddatenbankname | BESCHREIBUNG |
---|---|---|
Konfigurationsdatenbank | BizTalkMgmtDb | Der zentrale Metainformationsspeicher für alle Instanzen von BizTalk Server in der BizTalk Server gruppe. |
BizTalk MessageBox-Datenbank | BizTalkMsgBoxDb | Speichert Abonnement-Prädikate. Es handelt sich um eine Hostplattform, die Warteschlangen und Zustandstabellen für jeden BizTalk Server Host speichert. In der MessageBox-Datenbank werden auch die Nachrichten und Nachrichteneigenschaften gespeichert. |
BizTalk-Überwachungsdatenbank | BizTalkDTADb | Speichert Geschäfts- und Integritätsüberwachungsdaten, die von der BizTalk Server-Nachverfolgungs-Engine nachverfolgt werden. |
BAM-Analysedatenbank | BAMAnalysis | SQL Server Analysis Services Datenbank, die die aggregierten Verlaufsdaten für Geschäftsaktivitäten speichert. |
BAM-Sternschema-Datenbank | BAMStarSchema | Transformiert die Daten, die von der Überwachung von Geschäftsaktivitäten für die OLAP-Verarbeitung gesammelt wurden. Diese Datenbank ist bei Verwendung der BAM-Analysedatenbank erforderlich. |
Primäre BAM-Importdatenbank | BAMPrimaryImport | Speichert die Ereignisse aus Geschäftsaktivitäten und fragt dann den Fortschritt und die Daten nach Aktivitätsinstanzen ab. Diese Datenbank führt auch Echtzeitaggregationen aus. |
BAM-Archivdatenbank | BAMArchive | Speichert Abonnement-Prädikate. Die BAM-Archivdatenbank minimiert die Akkumulation von Geschäftsaktivitätsdaten in der primären BAM-Importdatenbank. |
SSO-Datenbank | SSODB | Speichert die Konfigurationsinformationen für Empfangsspeicherorte sicher. Speichert Informationen für SSO-Partneranwendungen sowie die verschlüsselten Benutzeranmeldeinformationen für alle Partneranwendungen. |
Regel-Engine-Datenbank | BizTalkRuleEngineDb | Repository für: – Richtlinien, bei denen es sich um Sätze verwandter Regeln handelt. - Vokabularen, bei denen es sich um Sammlungen von benutzerfreundlichen, domänenspezifischen Namen für Datenverweise in Regeln handelt. |
Nachverfolgen der Analysis Server-Verwaltungsdatenbank | BizTalkAnalysisDb | Speichert OLAP-Cubes für die Geschäfts- und Integritätsüberwachung. |
Trennung von Datendateien und Protokolldateien
Wie bereits erwähnt, platziert eine Standardkonfiguration BizTalk Server die MessageBox-Datenbank in einer einzelnen Datei in der Standarddateigruppe. Standardmäßig werden die Daten- und Transaktionsprotokolle für die MessageBox-Datenbank auf demselben Laufwerk und Pfad platziert. Dies erfolgt, um Systeme mit einem einzelnen Datenträger aufzunehmen. Eine einzelne Datei-, Dateigruppen-/Datenträgerkonfiguration ist in einer Produktionsumgebung nicht optimal . Für eine optimale Leistung sollten die Datendateien und Protokolldateien auf separaten Datenträgern platziert werden.
Hinweis
Protokolldateien sind niemals Teil einer Dateigruppe. Der Speicherplatz in Protokolldateien wird unabhängig vom Datenspeicher verwaltet.
Die 80/20-Regel der Verteilung BizTalk Server Datenbanken
Die Standard Konfliktquelle in den meisten BizTalk Server Lösungen, entweder aufgrund von Datenträger-E/A-Konflikten oder Datenbankkonflikten, ist die BizTalk Server MessageBox-Datenbank. Dies gilt sowohl für Einzelne als auch für Mehrere MessageBox-Szenarien. Es ist sinnvoll anzunehmen, dass bis zu 80 % des Werts der Verteilung von BizTalk-Datenbanken aus der Optimierung der MessageBox-Datendateien und der Protokolldatei abgeleitet werden. Das unten beschriebene Beispielszenario konzentriert sich auf die Optimierung der Datendateien für eine MessageBox-Datenbank. Diese Schritte können dann bei Bedarf für andere Datenbanken ausgeführt werden, z. B. wenn die Lösung eine umfangreiche Nachverfolgung erfordert, kann auch die Tracking-Datenbank optimiert werden.
Manuelles Hinzufügen von Dateien zur MessageBox-Datenbank, Schritt für Schritt
In diesem Abschnitt werden die Schritte beschrieben, die zum manuellen Hinzufügen von Dateien zur MessageBox-Datenbank ausgeführt werden können. In diesem Beispiel werden drei Dateigruppen hinzugefügt, und dann wird jeder Dateigruppe eine Datei hinzugefügt, um die Dateien für das MessageBox-Objekt auf mehrere Datenträger zu verteilen.
Hinweis
Für die Für dieses Handbuch durchgeführten Leistungstests wurden Dateigruppen mithilfe eines Skripts optimiert, das als Teil des BizTalk Server-Leitfadens zur Leistungsoptimierung veröffentlicht wird. Die folgenden Schritte dienen nur zu Referenzzwecken.
Manuelles Hinzufügen von Dateien zur MessageBox-Datenbank auf SQL Server
Öffnen Sie SQL Server Management Studio, um das Dialogfeld Mit Server verbinden anzuzeigen.
Geben Sie im Feld Servername des Dialogfelds Mit Server verbinden den Namen des SQL Server instance ein, in dem die BizTalk Server MessageBox-Datenbanken enthalten sind, und klicken Sie dann auf die Schaltfläche Verbinden, um das Dialogfeld Microsoft SQL Server Management Studio anzuzeigen.
Erweitern Sie im Bereich Objekt-Explorer von SQL Server Management Studio den Eintrag Datenbanken, um die Datenbanken für diese instance von SQL Server anzuzeigen.
Klicken Sie mit der rechten Maustaste auf die Datenbank, für die die Dateien hinzugefügt werden sollen, und klicken Sie dann auf Eigenschaften , um das Dialogfeld Datenbankeigenschaften für die Datenbank anzuzeigen.
Wählen Sie im Dialogfeld Datenbankeigenschaften die Seite Dateigruppen aus . Klicken Sie auf die Schaltfläche Hinzufügen , um zusätzliche Dateigruppen für die BizTalkMsgBoxDb-Datenbanken zu erstellen. Im folgenden Beispiel werden drei zusätzliche Dateigruppen hinzugefügt.
Wählen Sie im Dialogfeld Datenbankeigenschaften die Seite Dateien aus.
Klicken Sie auf die Schaltfläche Hinzufügen , um zusätzliche Dateien zu erstellen, die den Dateigruppen hinzugefügt werden sollen, und klicken Sie dann auf OK. Die MessageBox-Datenbank ist jetzt auf mehrere Datenträger verteilt, was einen erheblichen Leistungsvorteil gegenüber einer einzelnen Datenträgerkonfiguration bietet.
Im folgenden Beispiel wird für jede zuvor erstellte Dateigruppe eine Datei erstellt, und jede Datei wird auf einem separaten Datenträger abgelegt.
SQL-Beispielskript zum Hinzufügen von Dateigruppen und Dateien zur BizTalk MessageBox-Datenbank
Das folgende SQL-Beispielskript führt dieselben Aufgaben aus, die im vorherigen Abschnitt manuell ausgeführt wurden. In diesem Beispielskript wird davon ausgegangen, dass verschiedene logische Laufwerke G bis J vorhanden sind. Das Skript erstellt Dateigruppen und Dateien für jede Dateigruppe und platziert die Protokolldateien auf dem Laufwerk J.
Hinweis
Da SQL Server sequenziell in seine Protokolldateien schreibt, besteht kein Leistungsvorteil, wenn mehrere Protokolldateien für eine SQL Server Datenbank erstellt werden.
-- Filegroup changes are made using the master database
USE [master]
GO
-- Script-wide declarations
DECLARE @CommandBuffer nvarchar(2048)
DECLARE @FG1_Path nvarchar(1024)
DECLARE @FG2_Path nvarchar(1024)
DECLARE @FG3_Path nvarchar(1024)
DECLARE @Log_Path nvarchar(1024)
-- Set the default path for all filegroups
SET @FG1_Path = N'G:\BizTalkMsgBoxDATA\'
SET @FG2_Path = N'H:\BizTalkMsgBoxDATA\'
SET @FG3_Path = N'I:\BizTalkMsgBoxDATA\'
SET @Log_Path = N'J:\BizTalkMsgBoxLog\'
ALTER DATABASE [BizTalkMsgBoxDb] ADD FILEGROUP [BTS_MsgBox_FG1]
SET @CommandBuffer = N'ALTER DATABASE [BizTalkMsgBoxDb] ADD FILE ( NAME = N''BizTalkMsgBoxDb_FG1'', FILENAME = N''' + @FG1_Path +
N'BizTalkMsgBoxDb_FG1.ndf'' , SIZE = 102400KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10240KB ) TO FILEGROUP [BTS_MsgBox_FG1]'
EXECUTE (@CommandBuffer)
ALTER DATABASE [BizTalkMsgBoxDb] ADD FILEGROUP [BTS_MsgBox_FG2]
SET @CommandBuffer = N'ALTER DATABASE [BizTalkMsgBoxDb] ADD FILE ( NAME = N''BizTalkMsgBoxDb_FG1'', FILENAME = N''' + @FG2_Path +
N'BizTalkMsgBoxDb_FG2.ndf'' , SIZE = 102400KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10240KB ) TO FILEGROUP [BTS_MsgBox_FG2]'
EXECUTE (@CommandBuffer)
ALTER DATABASE [BizTalkMsgBoxDb] ADD FILEGROUP [BTS_MsgBox_FG3]
SET @CommandBuffer = N'ALTER DATABASE [BizTalkMsgBoxDb] ADD FILE ( NAME = N''BizTalkMsgBoxDb_FG1'', FILENAME = N''' + @FG3_Path +
N'BizTalkMsgBoxDb_FG3.ndf'' , SIZE = 102400KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10240KB ) TO FILEGROUP [BTS_MsgBox_FG3]'
EXECUTE (@CommandBuffer)
ALTER DATABASE [BizTalkMsgBoxDb] MODIFY FILE ( NAME = N'BizTalkMsgBoxDb_log', SIZE = 10240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10240KB )
GO -- Completes the previous batch, as necessary
Das folgende SQL-Beispielskript kann verwendet werden, um eine bestimmte Dateigruppe als Standarddateigruppe festzulegen:
USE [BizTalkMsgBoxDb]
GO
declare @isdefault bit
SELECT @isdefault=convert(bit, (status & 0x10)) FROM sysfilegroups WHERE groupname=N'BTS_MsgBox_FG1'
if(@isdefault=0)
ALTER DATABASE [BizTalkMsgBoxDb] MODIFY FILEGROUP [BTS_MsgBox_FG1] DEFAULT
GO
Der Vorteil der Skripterstellung besteht darin, dass Skripte mehrere Aufgaben schnell ausführen, präzise reproduziert werden können und die Möglichkeit von menschlichen Fehlern verringern. Der Nachteil der Skripterstellung besteht darin, dass die Ausführung eines falsch geschriebenen Skripts möglicherweise schwerwiegende Probleme verursachen kann, die die BizTalk Server Datenbanken von Grund auf neu konfigurieren müssen. Daher ist es von größter Bedeutung, dass SQL-Skripts wie das in diesem Thema aufgeführte Beispielskript gründlich getestet werden, bevor sie in einer Produktionsumgebung ausgeführt werden.