Ich möchte absichtlich schlechte Indexbedingungen für eine SQL Server 2017-Testdatenbank erstellen, um diese Wartungsskripte besser zu verstehen. SQL Server Index- und Statistikpflege
Gibt es eine schnelle / automatische Möglichkeit, die Indexintegrität zu gefährden oder die Indexfragmentierung zu erhöhen? Kennen Sie eine nützliche Ressource, die ich mir ansehen kann, um dies zu erreichen?
sql-server
index
clustered-index
Mororo
quelle
quelle
DBCC SHRINKDATABASE ([yourNONProdDB])
Antworten:
Eine schnelle Möglichkeit, die ich mir vorstellen kann, besteht darin, eine Tabelle mit
UNIQUEIDENTIFIER
einem Primärschlüssel zu erstellen und viele zufällige Werte einzufügen. Dies könnte mit diesem Skript erreicht werden:Dadurch werden Millionen Zeilen generiert.
Da
NEWID()
SQL Server keine Bestellung garantiert, muss es an zufälligen Stellen in der Tabelle eingefügt werden - dies wird den Primärschlüssel fragmentieren.quelle
INSERT dbo.Tests (Id) SELECT NEWID(); GO 1000000;
- Dies wird offensichtlich mehr Zeit in Anspruch nehmen. Unter pastebin.com/SVLtiRnP finden Sie ein Beispiel, das ich für eine andere Frage zusammengestellt habe. Die Verwendung von Zeilen variabler Länge und deren zufällige Aktualisierung kann zu einer effizienteren Fragmentierung führen.Ich wollte mehrere "hässliche" Indizes erstellen, also habe ich Folgendes getan. Es hat gut funktioniert
quelle
Normalerweise tritt eine Indexfragmentierung auf, wenn eine Tabelle vorhanden ist
Update
oder eineInsert
Operation ausgeführt wird.Wenn Sie das Problem schnell erzeugen möchten (Indexfragmentierung), erstellen Sie eine
Index
in Ihrer Testtabelle mit wenigerfill factor
und führen Sie schwereUpdate
oderInsert
Operationen an dieser Tabelle durch. Sie können mit diesen Skripten arbeiten.quelle
Sie können auch
CRYPT_GEN_RANDOM
wie in dieser Antwort Folgendes verwenden : Filterschema im Indexoptimierungsskript .Sie können Daten in eine numerische Spalte mit einem Index einfügen, um sie wie folgt zu fragmentieren:
Sie können auch Daten aktualisieren oder in eine Zeichenfolge anstelle einer Zahl konvertieren, wenn Sie dies benötigen.
quelle