Introduzione alla raccolta in blocco PL/SQL
Una query ben strutturata, scritta oggi, potrebbe salvarti da eventi catastrofici in futuro. Le prestazioni delle query sono qualcosa che tutti cerchiamo, ma pochissimi lo trovano veramente. Imparare piccoli concetti potrebbe aiutarti ad acquisire esperienza che potrebbe portare a una migliore capacità di scrittura di query. Oggi in questo blog imparerai uno di quei piccoli concetti che è il "Collezione in blocco ”.
La raccolta in blocco consiste nel ridurre i cambiamenti di contesto e migliorare le prestazioni della query. Quindi, per capire cos'è la raccolta in blocco, dobbiamo prima imparare cos'è il Cambio di contesto ?
Cos'è il cambio di contesto?
Ogni volta che si scrive un blocco PL/SQL o si pronuncia un programma PL/SQL e lo si esegue, il motore di runtime PL/SQL inizia a elaborarlo riga per riga. Questo motore elabora tutte le istruzioni PL/SQL da solo ma passa tutte le istruzioni SQL che hai codificato in quel blocco PL/SQL al motore di runtime SQL. Tali istruzioni SQL verranno quindi elaborate separatamente dal motore SQL. Al termine dell'elaborazione, il motore SQL restituisce il risultato al motore PL/SQL. In modo che un risultato combinato possa essere prodotto da quest'ultimo. Questo salto avanti e indietro del controllo è chiamato cambio di contesto.
In che modo il cambio di contesto influisce sulle prestazioni della query?
Il cambio di contesto ha un impatto diretto sulle prestazioni della query. Maggiore è il salto dei controlli, maggiore sarà l'overhead che a sua volta degraderà le prestazioni. Ciò significa che minore sarà il cambio di contesto migliore sarà la prestazione della query.
Ora devi pensare "Non possiamo fare qualcosa al riguardo?" Possiamo ridurre queste transizioni di controllo? C'è comunque un utilizzo che possiamo ridurre i cambi di contesto? La risposta a tutte queste domande è sì, abbiamo un'opzione che può aiutarci. Questa opzione è la clausola Bulk Collect .
Cos'è la clausola di raccolta in blocco?
La clausola Bulk Collect comprime più opzioni in un unico cambio di contesto e aumenta l'efficienza e le prestazioni di un programma PL/SQL.
La clausola Bulk Collect riduce il salto di controllo multiplo raccogliendo tutte le chiamate alle istruzioni SQL dal programma PL/SQL e inviandole a SQL Engine in un solo passaggio e viceversa.
Dove possiamo utilizzare la clausola Bulk Collect?
La clausola Bulk Collect può essere utilizzata con le clausole SELECT-INTO, FETCH-INTO e RETURN-INTO.
Con l'aiuto di Bulk Collect Statement possiamo SELEZIONARE, INSERIRE, AGGIORNARE o CANCELLARE insiemi di dati di grandi dimensioni da oggetti di database come tabelle o viste.
Che cos'è l'elaborazione in blocco dei dati?
Il processo di recupero di batch di dati dal motore di runtime PL/SQL al motore SQL e viceversa è chiamato Elaborazione dati in blocco.
Quante dichiarazioni di elaborazione dati in blocco abbiamo?
Abbiamo una clausola sull'elaborazione dei dati in blocco che è Bulk Collect e una dichiarazione sull'elaborazione di dati in blocco che è FORALL in Oracle Database.
Ho sentito che la clausola di raccolta in blocco utilizza sia i cursori impliciti che quelli espliciti?
Sì, hai sentito bene. Possiamo utilizzare la clausola Bulk collect all'interno di un'istruzione SQL o con l'istruzione FETCH. Quando utilizziamo la clausola di raccolta in blocco con l'istruzione SQL, ad esempio SELECT INTO, utilizza il cursore implicito. Considerando che se utilizziamo la clausola di raccolta in blocco con l'istruzione FETCH, utilizza il cursore esplicito.
Questa è stata una rapida introduzione alla prima clausola di elaborazione dati di massa PL/SQL che è BULK COLLECT. Impareremo la seconda istruzione di elaborazione dei dati di massa una volta terminata la prima. Nel frattempo assicurati di iscriverti al nostro canale YouTube perché nel prossimo tutorial impareremo come possiamo migliorare l'efficienza di un'istruzione SQL utilizzando una clausola Bulk Collect.
Grazie e buona giornata!