3 Stimmen

Leistungseinbußen bei der Einfügung in die Volltextindex-Tabelle auf Sql Server 2005

Ich versuche, eine große Menge von Datensätzen in eine Tabelle einzufügen, die als Volltext indexiert ist. Ich habe die Änderungsverfolgung auf auto gesetzt.

Die Datensätze werden aus einer anderen Tabelle eingefügt, normalerweise etwa 50.000 auf einmal. Auf SQL Server 2008 dauert dies normalerweise etwa 5 Sekunden. Aber auf unserer Live-Umgebung von 2005 dauert dies mehr als 10 Minuten.

Bei Betrachtung der Ausführungspläne scheint das Einfügen in den gruppierten Index der Volltext-Tracking-Tabellen das Problem zu sein. Die Primärschlüsselspalte ist ein uniqueidentifier, die mit newsequentialid() erstellt wird. Während 2008 1 Clustered Index Merge auf fulltext_index_docidstatus ausführt, führt 2005 50.000 Mal ein Clustered Index Insert auf fulltext_index_map aus.

Leider ist ein Upgrade des Servers derzeit keine Option. Das Deaktivieren der Änderungsverfolgung behebt das Problem, aber ich möchte das wirklich nicht tun, da das Verwalten der Bevölkerung selbst nicht angenehm sein wird. Die Änderungsverfolgung scheint der schnellste Weg zu sein, um neue Datensätze im Volltextindex anzuzeigen, und das hat Priorität.

Gibt es eine Möglichkeit, dies zu umgehen, während die Änderungsverfolgung aktiviert bleibt?

2voto

Joe Stefanelli Punkte 128819

Ich vermute, dass die eigentliche Ursache Ihres Problems darin liegt, dass die Volltext-Engine im Jahr 2008 in SQL Server verschoben wurde, während frühere Versionen den externen MSFTESQL-Dienst verwendet haben. Was das bedeutet, ist, dass SQL 2008 den vollen Vorteil von set-basierten Operationen bei der Arbeit mit Volltext-Indizes nutzen kann, während, wie Sie gesehen haben, 2005 jede Zeile einzeln behandeln muss. Weitere Details finden Sie in diesem Microsoft-Whitepaper. Die Quintessenz ist, dass ich denke, dass Sie die Änderungsverfolgung ausschalten müssen, um die gewünschte Leistung zu erzielen, oder sich mit der langen Einfügezeit abfinden müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X