Freigeben über


Überwachen und Warten von Planning Server-Datenbankindizes

Aktualisiert: 2009-04-30

In diesem Artikel:

  • Examine Measure Group table indexes

  • Checking index fragmentation

  • Reorganizing indexes

  • Rebuilding indexes

Wie die meisten Datenbanksysteme verwendet auch das Planning Server-System zur Verbesserung der Systemleistung Indizes. Für gruppierte oder nicht gruppierte Indizes gleichermaßen bewirkt INSERT/UPDATE eine Aufteilung der Seiten, was eine Fragmentierung zur Folge hat. Im Laufe der Zeit nimmt die Indexfragmentierung immer mehr zu, bis sie letztendlich die Systemleistung beeinträchtigt. Es ist daher wichtig, dass der Datenbankadministrator den Indexfragmentierungsstatus überwacht und weiß, welche Schritte bei einer übermäßigen Fragmentierung der Indizes zu ergreifen sind.

Alle Tabellen in der Planning-Anwendungsdatenbank sollten auf ihren Indexfragmentierungsstatus überwacht werden. Besondere Aufmerksamkeit sollte jedoch den Measuregruppentabellen gewidmet werden, deren Name mit dem Präfix MG_ beginnt. In Anwendungsdatenbanken unterliegen Measuregruppentabellen umfangreichen Einfüge-, Aktualisierungs- und Löschvorgängen. Diese Datenänderungen können beim Senden von Arbeitsaufträgen oder beim Ausführen von Berechnungsregeln erfolgen. Einige Measuregruppentabellen weisen eine höhere Aktivität auf als andere. Die Indizes von MG_*-Tabellen werden mit der Zeit stark fragmentiert und können die Systemleistung erheblich beeinträchtigen, wenn die Indizes nicht regelmäßig neu erstellt oder neu organisiert werden.

Untersuchen von Measuregruppentabellenindizes

Wenn ein Modell erstellt wird, wird in Planning Server ein gruppierter Index für die neue MG_*-Tabelle erzeugt. Dieser gruppierte Index umfasst alle Dimensionsschlüssel in der Measuregruppentabelle. Die Dimensionsschlüssel in diesem gruppierten Index werden von Planning Server in willkürlicher Reihenfolge angeordnet. Die Reihenfolge entspricht möglicherweise nicht der Verwendung von Measuregruppentabellen beim einzelnen Kunden (z. B. Rückschreiben, Laden von Daten und regelbasierte Berechnung). Möglicherweise muss der Datenbankadministrator die Spaltenreihenfolge des gruppierten Index untersuchen und neu anordnen.

Beispielsweise wird der folgende gruppierte Index für die MG_Strategic_Plan_MeasureGroup_default_partition-Tabelle mit der folgenden vorgegebenen Spaltenreihenfolge erstellt. Sie können die Spaltenreihenfolge in diesem Index ändern, um sie an die Verwendung der Measuregruppentabelle anzupassen. Außerdem empfiehlt es sich, die Entity_MemberID-Spalte in diesem Index an die erste Position zu verschieben, weil Benutzer von PerformancePoint-Add-In für Excel häufig Rückschreibvorgänge auf Grundlage der Entität ausführen.

CREATE CLUSTERED INDEX [ClusteredIndex_default_partition] ON [dbo].[MG_Strategic_Plan_MeasureGroup_default_partition] 
(
      [Scenario_MemberId] ASC,
      [Time_Month] ASC,
      [Account_MemberId] ASC,
      [BusinessProcess_MemberId] ASC,
      [Entity_MemberId] ASC,
      [TimeDataView_MemberId] ASC,
      [Currency_MemberId] ASC,
      [BusinessDriver_MemberId] ASC,
      [Product_MemberId] ASC,
      [Flow_MemberId] ASC,
      [Intercompany_MemberId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

Beispiel

Das folgende Beispiel veranschaulicht die Neuerstellung eines Index mit Onlineoption für eine Measuregruppentabelle in einer Planning-Anwendungsdatenbank.

ALTER INDEX [ClusteredIndex_default_partition] 
ON dbo.[MG_Strategic_Plan_MeasureGroup_default_partition]
REBUILD WITH (ONLINE = ON);

Der Datenbankadministrator sollte auf dem Computer mit Microsoft SQL Server 2005 für jede Measuregruppentabelle einen Auftrag zum Defragmentieren des Index erstellen. Je nach Fragmentierung sollte der Index mit unterschiedlicher Häufigkeit neu organisiert und neu erstellt werden.

Sie können den Index beispielsweise einmal täglich neu organisieren und einmal pro Woche neu erstellen. Einige Indizes erfordern möglicherweise eine häufigere Neuerstellung, z. B. die gruppierten Indizes in der Measuregruppentabelle. Planen Sie die Aufträge zur Indexneuerstellung für Nebenzeiten, z. B. um Mitternacht. Beide Methoden können online durchgeführt werden, mit Ausnahme der Tabellen, die Branchensystemdatentypen enthalten. Wenn Sie die Indexneuerstellung offline statt online ausführen möchten, müssen Sie die Anwendung zuerst offline schalten. Informationen zum Offlineschalten einer Anwendung finden Sie in der Hilfe zur Planning-Verwaltungskonsole.

Überprüfen der Indexfragmentierung

Im Laufe der Zeit können die Informationen im Index infolge von Datenbankänderungen verteilt oder fragmentiert werden. Stark fragmentierte Indizes können die Abfrageleistung beeinträchtigen und eine langsame Reaktion der Anwendung verursachen.

In SQL Server 2005 können Sie die Indexfragmentierung beheben, indem Sie den Index neu organisieren oder neu erstellen. Sie müssen den Index analysieren und den Grad der Fragmentierung bestimmen, bevor Sie sich für eine Defragmentierungsmethode entscheiden.

Beispiel

Das folgende Beispiel veranschaulicht die Überwachung der Indexfragmentierung.

Führen Sie die folgende Codeanweisung aus:

SELECT a.index_id, name, avg_fragmentation_in_percent, *
FROM sys.dm_db_index_physical_stats (DB_ID(), OBJECT_ID('MG_Strategic_Plan_MeasureGroup_default_partition'),
     NULL, NULL, NULL) AS a
        JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id

Die Rückgabe entspricht einem Resultset ähnlich dem folgenden.

index_id Name    avg_fragmentation_in_percent

1

MG_Strategic_Plan_MeasureGroup_default_partition_PK

23.076923076923077

Weitere Informationen über die Fragmentierung finden Sie unter SQL Server Books Online. In diesem Beispiel besteht die empfohlene Lösung darin, MG_Strategic_Plan_MeasureGroup_default_partition_PK neu zu organisieren,da avg_fragmentation_in_percent weniger als 30 Prozent beträgt.

Bei einer Fragmentierung von mehr als 30 Prozent würde die Empfehlung lauten, den Index neu zu erstellen.

HinweisHinweis:

Die Angabe von 30 Prozent entspricht der Empfehlung in SQL Server Books Online. Sie können diese Zahl den Anforderungen Ihrer Organisation entsprechend anpassen.

Neuorganisieren von Indizes

Es wird empfohlen, einen Index dann neu zu organisieren, wenn er nicht stark fragmentiert ist. Wenn der Index stark fragmentiert ist, erzielen Sie bessere Ergebnisse durch eine Neuerstellung des Index. Richtlinien zur Fragmentierung finden Sie unter Checking Index Fragmentation.

Beispiel

Das folgende Beispiel veranschaulicht das Neuorganisieren des Primärschlüsselindex einer Measuregruppentabelle in Planning Server. Verwenden Sie zum Neuorganisieren eines Index oder mehrerer Indizes die ALTER INDEX-Anweisung mit der REORGANIZE-Klausel.

ALTER INDEX [ClusteredIndex_default_partition] 
ON dbo.[MG_Strategic_Plan_MeasureGroup_default_partition]
REORGANIZE ;

Das Neuorganisieren des Index ist nicht so wirkungsvoll wie das Neuerstellen des Index: Es bereinigt lediglich die Fragmentierung auf Endknotenebene. Das Objekt selbst wird nicht verschoben, um eine bessere Scandichte zu erreichen. Der Befehl zum Neuorganisieren des Index wird immer online ausgeführt. Während der Neuorganisation des Index werden keine lang dauernden Sperren gehalten. Informationen zum Neuorganisieren des Index und über die Vor- und Nachteile der Neuorganisation und Neuerstellung eines Index finden Sie unter SQL Server Books Online.

Neuerstellen von Indizes

Ein Index kann neu erstellt werden, indem der alte Index gelöscht und ein neuer Index erstellt wird. Wenn ein neuer Index erstellt wird, wird die Fragmentierung entfernt.

Das folgende Beispiel veranschaulicht die Neuerstellung eines Index mit Onlineoption für eine Measuregruppentabelle in Planning Server

ALTER INDEX [ClusteredIndex_default_partition] 
ON dbo.[MG_Strategic_Plan_MeasureGroup_default_partition]
REBUILD WITH (ONLINE = ON);

Planen Sie einen SQL Server-Auftrag zum Defragmentieren des Index für jede Measuregruppentabelle. Nachdem Sie den Grad der Fragmentierung ermittelt haben, planen Sie den Auftrag so, dass die Neuorganisation und Neuerstellung des Index mit unterschiedlicher Häufigkeit erfolgt. Beispielsweise können Sie den Index einmal täglich in der Nebenzeit neu organisieren und einmal wöchentlich eine Neuerstellung des Index durchführen. Beide Methoden können online durchgeführt werden, mit Ausnahme der Tabellen, die Branchensystemdatentypen enthalten.

Mit dem Neuerstellen eines Index erzielen Sie im Allgemeinen bessere Ergebnisse als mit dem Neuorganisieren eines Index. Dabei werden alle Fragmentierungsebenen entfernt, sowohl auf Endknotenebene als auch in der B-Struktur, wodurch die Struktur wieder ausgeglichen wird. Die Statistik wird aktualisiert. Damit entspricht der Vorgang einem vollständigen Scan mit genauer Statistik.

Weitere Informationen über das Neuerstellen von Indizes finden Sie unter SQL Server Books Online.

Siehe auch