Verwenden der Sperrenservices

In Net Search Extender werden verschiedene Sperrentypen verwendet, die den gleichzeitigen Zugriff auf einen Index steuern. Die Verwendung der verschiedenen Sperren hängt davon ab, ob der Textindex nur gelesen wird, wie dies z. B. bei einer Suchanforderung der Fall ist, oder ob Änderungen am Textindex berechnet und anschließend auch in den zugehörigen Dateien nachvollzogen werden müssen.

Während der Ausführung des Befehls db2text start werden die Sperrenservices automatisch gestartet. Es gibt folgende Typen von Sperren für einen Textindex:

S-Sperre
Für den gemeinsamen Lesezugriff, z. B. bei Suchanforderungen.
U-Sperre
Für den Schreib-/Lesezugriff während der Berechnung von Indexänderungen (Aktualisierungen) bei gleichzeitigem Lesezugriff, z. B. bei Suchanforderungen.
X-Sperre
Für den exklusiven Schreib-/Lesezugriff für einen kurzen Zeitraum, in dem Änderungen tatsächlich in den Index geschrieben werden.
IX-Sperre
Für den beabsichtigten Schreib-/Lesezugriff, um neue S-Sperren zu verhindern, während der Aktualisierungsprozess auf eine X-Sperre wartet.

Pro DB2-Exemplar ist ein Net Search Extender-Sperrenservice vorhanden. Der Sperrenservice verwaltet die Sperren für mehrere Datenbanken.

Die Konfigurationsdatei für die Sperrenservices hat den Namen db2extlm.cfg. Sie ist auf UNIX-Systemen unter <instance_owner_home>/sqllib/db2ext und auf Windows-Systemen unter <sqllib>\<DB2INSTANCE>\db2ext gespeichert.

Änderungen der Konfigurationsdatei werden erst dann wirksam, wenn die Net Search Extender-Exemplarservices mit db2text start gestartet werden. Weitere Informationen finden Sie unter CONTROL. Der Benutzer kann die folgenden Werte definieren:

Die Standardwerte für die Konfigurationsdatei lauten wie folgt:

<default
         maxDbs         = "  8"
         maxIdxPerDb    = " 50"
         maxLocksPerIdx = "100"

         sWait = "  50"
         uWait = " 500"
         xWait = " 500"

         sAttempt = "50"
         uAttempt = "10"
         xAttempt = "60"

         latchTimeout = "80"

/>

Die Syntax lautet <standardattribut=wert.../>, wobei die Attribute folgende Bedeutungen haben:

maxDbs
Die Anzahl der Datenbanken, die von den Sperrenservices verwaltet werden können (integer >1).
maxIdxPerDb
Die Anzahl der Indizes pro Datenbank, die gesperrt werden können (integer >1). Dieser Wert ist für alle Datenbanken gleich.
maxLocksPerIdx
Die Anzahl der Sperren, die gleichzeitig für einen Index vorhanden sein können (integer>1). Dieser Wert ist für alle Indizes gleich.
sWait/sAttempt
Bei der Anforderung einer S-Sperre ist 'sAttempt' die Anzahl der unternommenen Versuche, falls die Sperre nicht sofort erteilt wird. 'sWait' ist die Wartezeit zwischen diesen Versuchen (integer >1). Diese Parameter gelten auch für IX-Sperren.
uWait/uAttempt
Bei der Anforderung einer U-Sperre ist 'uAttempt' die Anzahl der unternommenen Versuche, falls die Sperre nicht sofort erteilt wird. 'uWait' ist die Wartezeit zwischen diesen Versuchen (integer >1).
xWait/xAttempt
Bei der Anforderung einer X-Sperre ist 'xAttempt' die Anzahl der unternommenen Versuche, falls die Sperre nicht sofort erteilt wird. 'xWait' ist die Wartezeit zwischen diesen Versuchen (integer >1).
latchTimeout
Dies ist die zusätzliche Wartezeit für die Intervallsperrenservices. Ermitteln Sie die Gesamtwartezeit für eine Sperre unter Verwendung folgender Berechnung:
Wartezeit = # Versuche * (# Wartezeiten + (2 * # latchTimeout))
Die Wartezeit wird in Millisekunden berechnet. Beachten Sie, dass mit jedem Versuch der Wert für latchTimeout verdoppelt wird, wenn er zur Gesamtwartezeit hinzuaddiert wird.