Aktualisiert einen Textindex.
REFRESH TEXT INDEX text-index-name ON [ owner.]table-name [ WITH { ISOLATION LEVEL isolation-level | 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 isolation-level Verwenden Sie WITH ISOLATION LEVEL, um die Isolationsstufe für die Ausführung des Aktualisierungsvorgangs zu ändern.
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.
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.
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.
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.
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.
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.
Sie müssen Eigentümer der Tabelle sein oder eines der folgenden Privilegien haben:
Automatisches Festschreiben (Autocommit).
SQL/2008 Erweiterung des Herstellers.
Die folgende Anweisung aktualisiert einen fiktiven Textindex namens MarketingTextIndex und erzwingt seinen Neuaufbau.
REFRESH TEXT INDEX MarketingTextIndex ON GROUPO.MarketingInformation FORCE BUILD; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |