Introduktion till PL/SQL Bulk Collect
En välstrukturerad fråga, skriven idag, kan rädda dig från katastrofala händelser i framtiden. Frågeprestanda är något vi alla söker, men väldigt få finner det verkligen. Att lära sig små begrepp kan hjälpa dig att skaffa dig erfarenhet, vilket kan leda till en bättre förmåga att skriva frågor. Idag i den här bloggen ska du lära dig ett av de där små koncepten som är "Bulk Collect ”.
Massinsamling handlar om att minska kontextväxlingar och förbättra prestandan för frågan. För att förstå vad som är massinsamling måste vi alltså först lära oss vad som är Kontextbyte ?
Vad är kontextbyte?
När du skriver ett PL/SQL-block eller säger ett PL/SQL-program och kör det, börjar PL/SQL-runtime-motorn att bearbeta det rad för rad. Denna motor bearbetar alla PL/SQL-satser av sig själv men den skickar alla SQL-satser som du har kodat i det PL/SQL-blocket till SQL-körningsmotorn. Dessa SQL-satser kommer sedan att behandlas separat av SQL-motorn. När det är klart att bearbeta dem returnerar SQL-motorn sedan resultatet tillbaka till PL/SQL-motorn. Så att ett kombinerat resultat kan produceras av den senare. Detta fram och tillbaka hoppning av kontroll kallas kontextväxling.
Hur påverkar kontextväxling frågeprestanda?
Kontextväxling har en direkt inverkan på frågans prestanda. Ju högre hoppning av kontroller desto större blir overheaden vilket i sin tur kommer att försämra prestandan. Detta innebär att mindre kontextväxling bättre kommer att vara frågeprestanda.
Nu måste du tänka "Kan vi inte göra något åt det här?" Kan vi minska dessa kontrollövergångar? Finns det på något sätt som vi kan minska kontextväxlingarna med? Svaret på alla dessa frågor är ja, vi har ett alternativ som kan hjälpa oss. Det alternativet är Bulk Collect-klausulen .
Vad är Bulk Collect-klausul?
Bulk collect-satsen komprimerar flera switchar till en enda kontextväxel och ökar effektiviteten och prestandan för ett PL/SQL-program.
Bulk collect-satsen minskar multipla kontrollhopp genom att samla alla SQL-satsanrop från PL/SQL-programmet och skicka dem till SQL Engine på bara en gång och vice versa.
Var kan vi använda Bulk Collect-satsen?
Bulk collect-satsen kan användas med SELECT-INTO, FETCH-INTO och RETURN-INTO klausuler.
Med hjälp av Bulk Collect Statement kan vi VÄLJA, INFOGA, UPPDATERA eller DELETE stora datamängder från databasobjekt som tabeller eller vyer.
Vad är massdatabearbetning?
Processen att hämta batcher av data från PL/SQL-runtime-motorn till SQL-motorn och vice versa kallas Bulk Data Processing.
Hur många bulkdatabearbetningsutlåtanden har vi?
Vi har en klausul för massdatabehandling vilket är Bulk Collect och ett uttalande för massdatabearbetning som är FORALL i Oracle Database.
Jag har hört att bulk collect-klausulen använder både implicita och explicita markörer?
Ja, du hörde rätt. Vi kan använda Bulk collect-satsen antingen i en SQL-sats eller med FETCH-sats. När vi använder bulk collect-sats med SQL Statement, dvs SELECT INTO, använder den implicit markör. Om vi använder bulk collect-satsen med FETCH-satsen använder den explicit markör.
Detta var en snabb introduktion till den första PL/SQL-bulkdatabehandlingsklausulen som är BULK COLLECT. Vi kommer att lära oss om det andra bulkdatabearbetningsmeddelandet när vi är klara med det första. Se under tiden till att prenumerera på vår YouTube-kanal, för i nästa handledning kommer vi att lära oss hur vi kan förbättra effektiviteten för ett SQL-uttalande med hjälp av en Bulk Collect-klausul.
Tack och ha en bra dag!