2009-05-06 4 views

Antwort

4

"Latch-Bibliothek-Cache" bezieht sich nicht darauf, ob E/A in einer gegebenen Tabelle hoch ist. Dies bedeutet, dass Sie auf einen Latch für den Cache von geparsten SQL-Anweisungen warten. Am wahrscheinlichsten, wenn Sie diese Spitzen sehen, gibt es eine ungewöhnliche Anzahl von harten Parsern.

Der häufigste Grund dafür ist, dass Sie keine Bind-Variablen verwenden, so dass Sie viele ähnliche Anweisungen mit unterschiedlichen Werten verarbeiten. Z.B. Sie ausführen Aussagen wie:

SELECT name FROM emp WHERE empid = 3; 

und die wörtliche ID-Wert jedes Mal ändert die Abfrage ausgeführt wird, eine neue Anweisung verursacht analysiert werden. Es ist besser, das Literal durch eine Bind-Variable zu ersetzen und einen neuen Wert für jede Ausführung zu binden. Wie dies genau geschieht, hängt von der Sprache/Bibliothek/Umgebung ab, mit der Sie Anweisungen für die Datenbank ausführen.

+0

Wird die Variable über vorbereitete Anweisungen (in JDBC) gebunden? Oder ist es etwas anderes? – Sathya

+0

Ja, PreparedStatement ist der Weg zu gehen. Sie würden Anweisungstext wie "SELECT name FROM emp WHERE empid =?" Vorbereiten (d. H. Parsen) und vor jeder Ausführung den gewünschten Wert an den durch den Parameter? Repräsentierten Anweisungsparameter binden. –

Verwandte Themen