Aktualisiert einen Textindex.
REFRESH TEXT INDEX Textindexname ON [ Eigentümer.]Tabellenname [ WITH { ISOLATION LEVEL Isolationsstufe | EXCLUSIVE MODE | SHARE MODE } ] [ FORCE { BUILD | INCREMENTAL } ]
WITH-Klausel Benutzen Sie die WITH-Klausel zur Angabe der Art der Sperre, die Sie während der Aktualisierung für die Basistabellen benutzen möchten. Die Arten der gesetzten Sperren legen fest, wie der Textindex mit Daten gefüllt wird und wie die Gleichzeitigkeit von Transaktionen betroffen ist. Wenn Sie die WITH-Klausel nicht angeben, ist der Standardwert WITH ISOLATION LEVEL READ UNCOMMITTED, unabhängig von der für die Verbindung eingerichteten Isolationsstufe.
Sie können folgende Optionen für die WITH-Klausel festlegen:
ISOLATION LEVEL Isolationsstufe Verwenden Sie WITH ISOLATION LEVEL, um die Isolationsstufe für die Ausführung des Aktualisierungsvorgangs zu ändern. Hinweise zu Isolationsstufen finden Sie unter Transaktionen und Isolationsstufen verwenden und Isolationsstufen und Konsistenz.
Die ursprüngliche Isolationsstufe der Verbindung wird am Ende der Anweisungsausführung wiederhergestellt.
EXCLUSIVE MODE Verwenden Sie WITH EXCLUSIVE MODE, wenn Sie die Isolationsstufe nicht ändern wollen, aber sicherstellen möchten, dass die Daten aktualisiert werden, um mit den festgeschriebenen Daten in der Basistabelle konsistent zu sein. Wenn Sie WITH EXCLUSIVE MODE verwenden, werden exklusive Tabellensperren in der Basistabelle gesetzt und keine andere Transaktion kann Abfragen, Aktualisierungen oder andere Aktionen mit den Basistabellen durchführen, bis der Aktualisierungsvorgang abgeschlossen ist. Wenn keine Tabellensperren erhalten werden können, schlägt die Aktualisierung fehl und es wird ein Fehler zurückgegeben. Siehe Tabellensperren.
SHARE MODE Verwenden Sie WITH SHARE MODE, um anderen Transaktionen Schreibzugriff auf die Basistabelle zu gewähren, während der Aktualisierungsvorgang läuft. Wenn diese Klausel angegeben wird, werden vor dem Ausführen des Aktualisierungsvorgangs gemeinsame Tabellensperren für die Basistabelle gesetzt und bleiben erhalten, bis der Aktualisierungsvorgang abgeschlossen ist. Siehe Tabellensperren.
FORCE-Klausel Verwenden Sie diese Klausel, um die Aktualisierungsmethode anzugeben. Wenn diese Klausel nicht angegeben ist, entscheidet der Datenbankserver, ob eine inkrementelle Aktualisierung oder ein kompletter Neuaufbau erfolgt. Dabei richtet er sich danach, wie stark die Tabelle geändert wurde. Siehe Textindex-Aktualisierungstypen.
FORCE BUILD-Klausel Aktualisiert den Textindex durch Neuerstellen. Verwenden Sie diese Klausel, um einen kompletten Neuaufbau des Textindexes zu erzwingen.
FORCE INCREMENTAL-Klausel Aktualisiert den Textindex nur auf der Grundlage der Änderungen an der zugrunde liegenden Tabelle. Eine inkrementelle Aktualisierung nimmt weniger Zeit in Anspruch, wenn keine signifikante Menge von Aktualisierungen an der zugrunde liegenden Tabelle vorgenommen wurden. Verwenden Sie diese Klausel, um eine inkrementelle Aktualisierung des Textindexes zu erzwingen.
Bei einer inkrementellen Aktualisierung werden gelöschte Einträge nicht aus dem Textindex entfernt. Daher ist der Textindex möglicherweise größer als erwartet, da er sowohl die aktuellen als auch historische Daten enthält. In der Regel tritt dieses Problem bei Textindizes auf, die immer mit der FORCE INCREMENTAL-Klausel manuell aktualisiert werden. Bei automatisch aktualisierten Textindizes werden historische Daten automatisch gelöscht, wenn sie 50% der Gesamtgröße des Textindex ausmachen.
Diese Anweisung kann nur für Textindizes benutzt werden, die als MANUAL REFRESH oder AUTO REFRESH definiert sind.
Wenn Sie die FORCE-Klausel verwenden, können Sie die Ergebnisse der Systemprozedur sa_text_index_stats prüfen, um zu entscheiden, ob ein kompletter Neuaufbau (FORCE BUILD) oder eine inkrementelle Aktualisierung (FORCE INCREMENTAL) besser geeignet ist. Siehe sa_text_index_stats-Systemprozedur.
Sie können die REFRESH TEXT INDEX-Anweisung nicht für einen Textindex ausführen, der als IMMEDIATE REFRESH definiert ist.
Für MANUAL REFRESH-Textindizes verwenden Sie die Systemprozedur sa_text_index_stats, um zu ermitteln, ob der Textindex aktualisiert werden muss. Teilen Sie pending_length durch doc_length und verwenden Sie den Prozentsatz als Richtlinie für die Entscheidung, ob eine Aktualisierung erforderlich ist. Um zu ermitteln, welche Art des Neuaufbaus erforderlich ist, verwenden Sie dieselbe Vorgehensweise für deleted_length und doc_count.
Sie müssen Eigentümer der Basistabelle sein oder DBA- bzw. REFERENCES-Berechtigung haben.
Diese Anweisung kann nicht ausgeführt werden, wenn mit der WITH HOLD-Klausel geöffnete Cursor vorhanden sind, die entweder Anweisungs- oder Transaktions-Snapshots verwenden. Siehe Snapshot-Isolation.
Automatisches Festschreiben (Autocommit).
SQL/2008 Erweiterung des Herstellers.
Die folgende Anweisung aktualisiert einen Textindex namens MarketingTextIndex und erzwingt seinen Neuaufbau.
REFRESH TEXT INDEX MarketingTextIndex ON MarketingInformation FORCE BUILD; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |