Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was bedeutet es, wenn ich sage, dass die vorbereitete Anweisung vorkompiliert ist?

Wenn Sie eine vorbereitete Anweisung (d. h. eine vorkompilierte Anweisung) verwenden, sobald DB diese Anweisung erhält, wird sie kompiliert und zwischengespeichert, sodass sie die letzte kompilierte Anweisung für den nachfolgenden Aufruf derselben Anweisung verwenden kann. Es wird also für aufeinanderfolgende Aufrufe vorkompiliert.

Sie verwenden im Allgemeinen vorbereitete Anweisungen mit Bindevariablen, bei denen Sie die Variablen zur Laufzeit bereitstellen. Was nun bei der sukzessiven Ausführung vorbereiteter Anweisungen passiert, Sie können die Variablen bereitstellen, die sich von früheren Aufrufen unterscheiden. Aus DB-Sicht muss es die Anweisung nicht jedes Mal kompilieren, sondern fügt nur die Bind-Variablen zur Rum-Zeit ein. Wird also schneller.

Weitere Vorteile vorbereiteter Anweisungen sind:-

1)Schutz vor SQL-Injection-Angriffen

2) Schneller für aufeinanderfolgende Aufrufe derselben Anweisungen

Wie es funktioniert :-

  1. Die Vorkompilierung erfolgt durch die Datenbank. Einige einfachere Datenbanken kompilieren überhaupt keine Anweisungen. Andere kompilieren es möglicherweise beim Aufruf von PrepareStatement vor, und wieder andere tun dies möglicherweise, wenn execute zum ersten Mal für die Anweisung aufgerufen wird, wobei die Werte der Parameter beim Kompilieren (Erstellen eines Plans für) der Anweisung berücksichtigt werden.

  2. Datenbanken, die Anweisungen vorkompilieren, speichern sie normalerweise zwischen, sodass ps1 aller Wahrscheinlichkeit nach nicht erneut kompiliert wird. Einige JDBC-Treiber (z. B. von Oracle) speichern sogar vorbereitete Anweisungen, sodass sie sie nicht wirklich geschlossen haben, als ps.close() aufgerufen wurde.

  3. Datenbanken speichern Anweisungen im Allgemeinen zwischen, bis sie von etwas aus dem Cache entfernt werden.

Einzelheiten finden Sie in diesem Wiki verlinken