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 maximale Anzahl von Datenbanken
- Die maximale Anzahl von Indizes pro Datenbank
- Die maximale Anzahl zulässiger Sperren (gleichzeitige Benutzer) pro Index
- Wartezeiten und die Anzahl von Versuchen, eine Sperre zu aktivieren
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.