Mein Verständnis des Ghost-Bereinigungsprozesses ist, dass alle fünf Sekunden gespenstische Datensätze in einem Index entfernt werden. Damit das System nicht überlastet wird, werden nur etwa zehn Seiten gleichzeitig "bereinigt".
Das heißt also, dass alle fünf Sekunden nur Datensätze im Wert von ca. 80.000 bereinigt werden? Anscheinend sind meine Indizes immer mit gespenstischen Datensätzen gefüllt und die Bereinigung würde niemals abgeschlossen sein.
Nehmen wir also an, ich führe einen Löschvorgang durch, vielleicht eine Million Zeilen, und die Indexdatensätze für diese Millionen Zeilen sind ungefähr 8 GB groß. also ungefähr 100.000 mal die Differenz von 80k. Bedeutet das, dass die Geisterbereinigung 500.000 Sekunden oder fast sechs Tage dauern wird?
klar, ich vermisse hier etwas, weil es keinen Sinn macht, dass es so lange dauern würde, die gespenstischen Aufzeichnungen zu löschen. und was ist mit der anderen Aktivität, die denselben Index erreicht? Verursacht der Ghost-Bereinigungsprozess Wartezeiten oder muss auf andere Prozesse gewartet werden?
[Diese Frage wurde durch Leistungsprobleme verursacht, die wir im OpsMgrDW gesehen haben, und wir wollten mehr über diesen Prozess erfahren.]
quelle
Wir haben eine ähnliche Situation. Eine unserer Tabellen enthält viele Ghost-Datensätze, und diese Datensätze werden nicht durch den Ghost-Bereinigungsprozess bereinigt. DB Shrinking, DBCC Cleantable, Neuerstellung des Index und Reorganisation des Index haben keine Verwendung. Um dies zu beheben, übertragen wir Daten in eine temporäre Tabelle, übertragen dann die Tabelle und übertragen Daten zurück in eine abgeschnittene Tabelle. Diese Tabelle enthält LOB-Daten (2 nvarchar (max) Spalten). Gibt es eine andere Möglichkeit, dies zu beheben?
quelle