Introduktion til PL/SQL Bulk Collect
En velstruktureret forespørgsel, skrevet i dag, kan redde dig fra katastrofale begivenheder i fremtiden. Forespørgselsydeevne er noget, vi alle søger, men meget få finder det virkelig. At lære små begreber kan hjælpe dig med at få erfaring, hvilket kan føre til en bedre forespørgselsskrivning. I dag i denne blog skal du lære et af de små begreber, som er "Bulk Collect ”.
Masseindsamling handler om at reducere kontekstskift og forbedring af forespørgslens ydeevne. For at forstå, hvad der er masseindsamling, skal vi først lære, hvad der er Kontekstskift ?
Hvad er kontekstskift?
Hver gang du skriver en PL/SQL-blok eller siger et PL/SQL-program og udfører det, begynder PL/SQL-runtime-motoren at behandle det linje for linje. Denne motor behandler alle PL/SQL-sætninger af sig selv, men den sender alle SQL-sætninger, som du har kodet ind i den PL/SQL-blok til SQL-runtime-motoren. Disse SQL-sætninger vil derefter blive behandlet separat af SQL-motoren. Når den er færdig med at behandle dem, returnerer SQL-motoren derefter resultatet tilbage til PL/SQL-motoren. Således at et kombineret resultat kan frembringes af sidstnævnte. Dette frem og tilbage hop af kontrol kaldes kontekstskift.
Hvordan påvirker kontekstskift forespørgselsydeevnen?
Kontekstskift har en direkte indflydelse på forespørgslens ydeevne. Jo højere kontrollen er, jo større vil overheaden være, hvilket igen vil forringe ydeevnen. Dette betyder, at mindre kontekstskift bedre vil være forespørgselsydeevnen.
Nu må du tænke "Kan vi ikke gøre noget ved det her?" Kan vi reducere disse kontrolovergange? Er der alligevel ved hjælp af som vi kan reducere kontekstskiftene? Svaret på alle disse spørgsmål er ja, vi har en mulighed, som kan hjælpe os. Denne mulighed er Bulk Collect-klausulen .
Hvad er Bulk Collect-klausul?
Bulk collect-klausulen komprimerer flere switches til en enkelt kontekstswitch og øger effektiviteten og ydeevnen af et PL/SQL-program.
Bulk collect-klausul reducerer multiple kontrol-hopping ved at indsamle alle SQL-sætningskald fra PL/SQL-programmet og sende dem til SQL Engine på én gang og omvendt.
Hvor kan vi bruge Bulk Collect-klausulen?
Bulk collect-klausulen kan bruges med SELECT-INTO, FETCH-INTO og RETURN-INTO klausuler.
Ved hjælp af Bulk Collect Statement kan vi VÆLGE, INDSÆTTE, OPDATERE eller SLETTE store datasæt fra databaseobjekter såsom tabeller eller visninger.
Hvad er massedatabehandling?
Processen med at hente batches af data fra PL/SQL runtime engine til SQL engine og omvendt kaldes Bulk Data Processing.
Hvor mange massedatabehandlingserklæringer har vi?
Vi har én klausul til massebehandling af data som er Bulk Collect og én erklæring til massedatabehandling som er FORALL i Oracle Database.
Jeg har hørt, at bulk collect-klausulen bruger både implicitte og eksplicitte markører?
Ja, du hørte det rigtigt. Vi kan bruge Bulk collect-klausul enten i en SQL-sætning eller med FETCH-sætning. Når vi bruger bulk collect-klausul med SQL-sætning, dvs. SELECT INTO, bruger den implicit markør. Hvorimod hvis vi bruger bulk collect-klausul med FETCH-sætning, bruger den eksplicit markør.
Dette var en hurtig introduktion til den første PL/SQL massedatabehandlingsklausul, som er BULK COLLECT. Vi vil lære om den anden massedatabehandlingserklæring, når vi er færdige med den første. I mellemtiden skal du sørge for at abonnere på vores YouTube-kanal, for i det næste selvstudie lærer vi, hvordan vi kan forbedre effektiviteten af en SQL-sætning ved hjælp af en Bulk Collect-klausul.
Tak og god dag!