Freigeben über


Transaktionsprotokollspeicherplatz für Indexvorgänge

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

Umfangreiche Indexvorgänge können riesige Datenmengen erzeugen, die zu einem schnellen Füllen des Transaktionsprotokolls führen können. Um sicherzustellen, dass der Indexvorgang rückgängig gemacht werden kann, kann das Transaktionsprotokoll erst abgeschnitten werden, wenn der Indexvorgang abgeschlossen ist. Das Protokoll kann jedoch während des Indexvorgangs gesichert werden. Deshalb muss das Transaktionsprotokoll über ausreichend Speicherplatz verfügen, um sowohl die Transaktionen des Indexvorgangs als auch alle gleichzeitigen Benutzertransaktionen für die Dauer des Indexvorgangs aufnehmen zu können.

Das gilt sowohl für Offline- als auch für Onlineindexvorgänge. Da während eines Offlineindexvorgangs auf die zugrunde liegenden Tabellen nicht zugegriffen werden kann, gibt es möglicherweise nur wenige Benutzertransaktionen, und das Protokoll kann nicht so schnell wachsen. Onlineindexvorgänge verhindern keine gleichzeitige Benutzeraktivität. Daher können umfangreiche Onlineindexvorgänge in Kombination mit erheblichen gleichzeitigen Benutzertransaktionen zu einem kontinuierlichen Wachstum des Transaktionsprotokolls führen, ohne dass eine Option zum Abschneiden des Protokolls besteht.

Empfehlungen

Beim Ausführen umfangreicher Indexvorgänge sollten Sie die folgenden Empfehlungen beachten:

  1. Stellen Sie sicher, dass das Transaktionsprotokoll gesichert und abgeschnitten wird, bevor umfangreiche Indexvorgänge online ausgeführt werden, und dass das Protokoll über ausreichend Speicherplatz verfügt, um den projizierten Index und Benutzertransaktionen zu speichern.

  2. Erwägen Sie, die Option SORT_IN_TEMPDBON bei dem Indexvorgang festzulegen. Damit werden die Indextransaktionen von den gleichzeitigen Benutzertransaktionen getrennt. Die Indextransaktionen werden im tempdb Transaktionsprotokoll gespeichert, und die gleichzeitigen Benutzertransaktionen werden im Transaktionsprotokoll der Benutzerdatenbank gespeichert. Dadurch kann bei Bedarf das Transaktionsprotokoll der Benutzerdatenbank während der Indexierungsoperation gekürzt werden. Wenn sich das tempdb Protokoll nicht auf demselben Datenträger wie das Benutzerdatenbankprotokoll befindet, konkurrieren die beiden Protokolle nicht mit demselben Speicherplatz.

    Hinweis

    Stellen Sie sicher, dass die Datenbank und das tempdb Transaktionsprotokoll über ausreichend Speicherplatz verfügen, um den Indexvorgang zu verarbeiten. Das tempdb Transaktionsprotokoll kann erst gekürzt werden, wenn der Indexvorgang abgeschlossen ist.

  3. Verwenden Sie ein Datenbankwiederherstellungsmodell, das eine minimale Protokollierung des Indexvorgangs zulässt. Dies kann die Größe des Protokolls verringern und verhindern, dass das Protokoll den Protokollspeicher ausfüllt.

  4. Führen Sie den Onlineindexvorgang nicht in einer expliziten Transaktion aus. Das Protokoll wird erst gekürzt, wenn die expliziten Transaktion endet.