Database Reference
In-Depth Information
3.2.3.8 Latches
Viele Datenbankadministratoren haben so gut wie keine Erfahrungen mit den Latches,
weil die durch Latches verursachten Performanz-Probleme in der Regel bei den Systemen
mit vielen konkurrierenden Prozessen vorkommen. Wenn ein System vernünftig konzi-
piert und ausreichend dimensioniert ist, hat man normalerweise solche Probleme nicht.
Für mich selbst waren die Latches jahrelang nur eine ferne Theorie. Diese Theorie hat sich
aber sehr schnell in eine bittere Praxis verwandelt, als ich eines Tages eine Datenbank mit
mehreren Tausend Prozessen zur Betreuung bekam. Dieses System hatte 3 Besonderhei-
ten: die bereits erwähnte hohe Anzahl der Datenbankprozesse, sehr viele Parse Calls und
ein seltsames Konzept für die Performanz-Steigerung. Jedes Mal, wenn die Produktivität
des Systems nicht ausreichend war, startete man einfach zusätzliche Verarbeitungsprozes-
se. Ganz klar, dass es sehr oft genau den umgekehrten Effekt hervorrief. Dieses System
hatte sehr ernsthafte Latch-Probleme und war am Anfang ein echter Horror. Die meis-
ten Erfahrungen mit der Latch-Problematik habe ich bei diesem System gesammelt. Das
Tuning dieses Systems war ein langwieriger Prozess in enger Zusammenarbeit mit den
Entwicklern, der viele technische und auch mehrere organisatorische Lösungen umfasste.
Heutzutage läuft dieses System mit ca. 14 Tausend Datenbankprozessen vorbildlich stabil
und performant.
Kehren wir aber zurück zu unseren Latches. Dieses Thema ist sehr umfangreich. In
diesem Abschnitt beschreibe ich nur das Wesentliche, was ein Datenbankadministrator
wissen muss. Bei Bedarf, im Falle der speziellen Latch-Probleme, kann man seine Latch-
Kenntnisse vertiefen.
Man kann die Geschichte der Latches bei Oracle in [1, 2, 3] verfolgen. Die Latches für
Oracle 8i sind sehr gut im bekannten Buch von Steve Adams [1] beschrieben. In [2] sind
die Latches für Oracle 9i und 10g beschrieben. Eine exzellente Recherche der Latch-Verar-
beitung bei Oracle findet man in [3]. Die Grundlage für diese Recherche erschien zunächst
in [4].
Ein Latch ist ein spezieller Lock. Mit den Latches schützt Oracle verschiedene Struktu-
ren im SGA (system global area). Wenn z. B. ein Prozess im Begriff ist, eine solche Struktur
zu ändern, muss er zunächst einen exklusiven Zugriff auf diese Struktur bekommen, so
dass kein anderer Prozess sie zugleich ändern kann. Diesen Zugriff bekommt er mit Hilfe
eines Latches, das für die jeweilige Struktur zuständig ist. Einige Latches gibt es nur einmal,
andere mehrmals. Wenn ein Latch mehrmals vorhanden ist, gibt es für dieses Latch immer
ein Parent-Latch und ein oder mehrere Child-Latches. Die Statistiken für die Parent-Lat-
ches befinden sich in der View V$LATCH_PARENT, die Statistiken für die Child-Latches
in der View V$LATCH_CHILDREN. Die Statistiken für alle Latch-Arten befinden sich
in einer kumulierten Form in der View V$LATCH. Diese Views enthalten die 3 wichtigen
Spalten: NAME, LATCH# und ADDRESS. Die Spalte NAME beinhaltet einen Latch-Na-
men (z. B. „cache buffers chains“), die Spalte LATCH# eine Latch-Nummer und die Spalte
ADDRESS eine Adresse eines Parent- oder eines Child-Latch. Die Wartestatistiken für die
Latches haben eine Latch-Adresse als den ersten und eine Latch-Nummer als den zweiten
Parameter. Wenn eine Session auf Latches wartet, kann man mit diesen beiden Parametern
Search WWH ::




Custom Search