Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Einführung in die PL/SQL-Massenerfassung in der Oracle-Datenbank

Einführung in PL/SQL-Massenerfassung

Eine gut strukturierte Abfrage, die Sie heute schreiben, könnte Sie in Zukunft vor katastrophalen Ereignissen bewahren. Die Abfrageleistung ist etwas, das wir alle suchen, aber nur wenige finden es wirklich. Das Erlernen kleiner Konzepte kann Ihnen helfen, Erfahrungen zu sammeln, die zu einer besseren Fähigkeit zum Schreiben von Abfragen führen können. Heute lernen Sie in diesem Blog eines dieser kleinen Konzepte kennen, nämlich „Bulk Collect“. “.

Bei der Massenerfassung geht es darum, Kontextwechsel zu reduzieren und Verbessern der Leistung der Abfrage. Um also zu verstehen, was Massenerfassung ist, müssen wir zuerst lernen, was Kontextwechsel ist ?

Was ist Kontextwechsel?

Immer wenn Sie einen PL/SQL-Block oder sagen wir ein PL/SQL-Programm schreiben und ausführen, beginnt die PL/SQL-Laufzeit-Engine Zeile für Zeile mit der Verarbeitung. Diese Engine verarbeitet alle PL/SQL-Anweisungen selbst, leitet jedoch alle SQL-Anweisungen, die Sie in diesen PL/SQL-Block codiert haben, an die SQL-Laufzeit-Engine weiter. Diese SQL-Anweisungen werden dann separat von der SQL-Engine verarbeitet. Sobald die Verarbeitung abgeschlossen ist, gibt die SQL-Engine das Ergebnis an die PL/SQL-Engine zurück. Damit durch letzteres ein kombiniertes Ergebnis erzeugt werden kann. Dieses Hin- und Herspringen der Steuerung wird als Kontextwechsel bezeichnet.

Wie wirkt sich der Kontextwechsel auf die Abfrageleistung aus?

Der Kontextwechsel wirkt sich direkt auf die Leistung der Abfrage aus. Je höher das Springen der Steuerungen ist, desto größer ist der Overhead, was wiederum die Leistung verschlechtert. Das bedeutet, je geringer der Kontextwechsel, desto besser die Abfrageleistung.

Jetzt denken Sie sicher:„Können wir nicht etwas dagegen tun?“ Können wir diese Kontrollübergänge reduzieren? Gibt es überhaupt eine Verwendung, mit der wir die Kontextwechsel reduzieren können? Die Antwort auf all diese Fragen lautet ja, wir haben eine Option, die uns helfen kann. Diese Option ist die Bulk-Collect-Klausel .

Was ist die Bulk-Collect-Klausel?

Die Bulk-Collect-Klausel komprimiert mehrere Wechsel in einen einzigen Kontextwechsel und erhöht die Effizienz und Leistung eines PL/SQL-Programms.

Die Bulk-Collect-Klausel reduziert das mehrfache Kontroll-Hopping, indem alle SQL-Anweisungsaufrufe vom PL/SQL-Programm gesammelt und in einem Durchgang an die SQL-Engine gesendet werden und umgekehrt.

Wo können wir die Bulk-Collect-Klausel verwenden?

Die Massenerfassungsklausel kann mit den Klauseln SELECT-INTO, FETCH-INTO und RETURN-INTO verwendet werden.

Mit Hilfe der Bulk Collect-Anweisung können wir große Datensätze aus Datenbankobjekten wie Tabellen oder Ansichten AUSWÄHLEN, EINFÜGEN, AKTUALISIEREN oder LÖSCHEN.

Was ist Massendatenverarbeitung?

Der Vorgang des Abrufens von Datenstapeln von der PL/SQL-Laufzeit-Engine zur SQL-Engine und umgekehrt wird als Massendatenverarbeitung bezeichnet.

Wie viele Erklärungen zur Verarbeitung von Massendaten haben wir?

Wir haben eine Klausel zur Massendatenverarbeitung das ist Bulk Collect und eine Erklärung zur Massendatenverarbeitung das ist FORALL in der Oracle-Datenbank.

Ich habe gehört, dass die Massenerfassungsklausel sowohl implizite als auch explizite Cursor verwendet?

Ja, Sie haben richtig gehört. Wir können die Bulk-Collect-Klausel entweder innerhalb einer SQL-Anweisung oder mit der FETCH-Anweisung verwenden. Wenn wir die Bulk-Collect-Klausel mit der SQL-Anweisung verwenden, dh SELECT INTO, wird ein impliziter Cursor verwendet. Wenn wir dagegen eine Bulk-Collect-Klausel mit der FETCH-Anweisung verwenden, wird ein expliziter Cursor verwendet.

Dies war eine kurze Einführung in die erste PL/SQL-Klausel zur Massendatenverarbeitung, nämlich BULK COLLECT. Wir werden über die zweite Erklärung zur Massendatenverarbeitung erfahren, sobald wir mit der ersten fertig sind. Abonnieren Sie in der Zwischenzeit unbedingt unseren YouTube-Kanal, denn im nächsten Tutorial erfahren wir, wie wir die Effizienz einer SQL-Anweisung mithilfe einer Bulk-Collect-Klausel verbessern können.

Vielen Dank und einen schönen Tag!