Inleiding tot PL/SQL Bulk Collect
Een goed gestructureerde vraag, vandaag geschreven, kan u in de toekomst behoeden voor catastrofale gebeurtenissen. Queryprestaties zijn iets waar we allemaal naar op zoek zijn, maar slechts weinigen vinden het echt. Het leren van kleine concepten kan je helpen ervaring op te doen, wat kan leiden tot een betere schrijfvaardigheid voor vragen. Vandaag ga je in deze blog een van die kleine concepten leren, namelijk de "Bulk Collect ”.
Bij bulkverzameling draait alles om het verminderen van contextwisselingen en het verbeteren van de prestaties van de query. Dus om te begrijpen wat bulkverzameling is, moeten we eerst leren wat Contextomschakeling is. ?
Wat is contextwisseling?
Telkens wanneer u een PL/SQL-blok schrijft of een PL/SQL-programma zegt en het uitvoert, begint de PL/SQL-runtime-engine het regel voor regel te verwerken. Deze engine verwerkt alle PL/SQL-instructies zelf, maar geeft alle SQL-instructies die u in dat PL/SQL-blok hebt gecodeerd door aan de SQL-runtime-engine. Die SQL-statements worden dan apart verwerkt door de SQL-engine. Zodra de verwerking ervan is voltooid, stuurt de SQL-engine het resultaat terug naar de PL/SQL-engine. Zodat deze laatste een gecombineerd resultaat kan opleveren. Dit heen en weer hoppen van controle wordt contextomschakeling genoemd.
Hoe beïnvloedt het wisselen van context de queryprestaties?
Het wisselen van context heeft een directe invloed op de prestaties van de query. Hoe hoger het hoppen van bedieningselementen, hoe groter de overhead, die op zijn beurt de prestaties zal verminderen. Dit betekent dat hoe minder de contextwisseling beter is, de queryprestaties zullen zijn.
Nu denk je vast:"Kunnen we hier niet iets aan doen?" Kunnen we die besturingsovergangen verminderen? Is er een manier om de contextwisselingen te verminderen? Het antwoord op al die vragen is ja, we hebben een optie die ons kan helpen. Die optie is de Bulk Collect-clausule .
Wat is de bulkcollect-clausule?
Bulk collect-clausule comprimeert meerdere switches in een enkele contextswitch en verhoogt de efficiëntie en prestaties van een PL/SQL-programma.
Bulkcollect-clausule vermindert meervoudig control-hopping door alle SQL-instructieaanroepen van het PL/SQL-programma te verzamelen en ze in één keer naar SQL Engine te sturen en vice versa.
Waar kunnen we de Bulk Collect-clausule gebruiken?
Bulk collect-clausule kan worden gebruikt met SELECT-INTO-, FETCH-INTO- en RETURN-INTO-clausules.
Met behulp van Bulk Collect Statement kunnen we grote datasets SELECTEREN, INSERT, UPDATE of DELETE uit database-objecten zoals tabellen of views.
Wat is bulkgegevensverwerking?
Het proces van het ophalen van gegevensbatches van de PL/SQL-runtime-engine naar de SQL-engine en vice versa, wordt bulkgegevensverwerking genoemd.
Hoeveel verklaringen voor bulkgegevensverwerking hebben we?
We hebben één clausule voor het verwerken van bulkgegevens dat is Bulk Collect en één statement . voor het verwerken van bulkgegevens wat FORALL is in Oracle Database.
Ik heb gehoord dat de bulkcollect-clausule zowel impliciete als expliciete cursors gebruikt?
Ja, je hebt het goed gehoord. We kunnen de Bulk collect-clausule gebruiken in een SQL-instructie of met een FETCH-instructie. Wanneer we bulkcollect-clausule gebruiken met SQL-instructie, d.w.z. SELECT INTO, gebruikt het een impliciete cursor. Terwijl als we de bulkcollect-clausule gebruiken met de FETCH-instructie, deze een expliciete cursor gebruikt.
Dit was een korte introductie tot de eerste PL/SQL-clausule voor bulkgegevensverwerking, namelijk BULK COLLECT. We zullen meer te weten komen over de tweede verklaring voor bulkgegevensverwerking zodra we klaar zijn met de eerste. Zorg er ondertussen voor dat je je abonneert op ons YouTube-kanaal, want in de volgende tutorial zullen we leren hoe we de efficiëntie van een SQL-statement kunnen verbeteren met behulp van een Bulk Collect-clausule.
Bedankt en een fijne dag verder!