Въведение в PL/SQL Bulk Collect
Добре структурирана заявка, написана днес, може да ви спаси от катастрофални събития в бъдеще. Ефективността на заявките е нещо, което всички търсим, но много малко хора наистина го намират. Изучаването на малки понятия може да ви помогне да придобиете опит, което може да доведе до по-добро умение за писане на заявки. Днес в този блог ще научите една от онези малки концепции, която е „Групово събиране “.
Масовото събиране е свързано с намаляване на превключвателите на контекста и подобряване на производителността на заявката. По този начин, за да разберем какво е групово събиране, първо трябва да научим какво е Превключване на контекста ?
Какво е превключване на контекста?
Всеки път, когато напишете PL/SQL блок или кажете PL/SQL програма и я изпълните, машината за изпълнение на PL/SQL започва да го обработва ред по ред. Този двигател обработва сам всички PL/SQL оператори, но предава всички SQL изрази, които сте кодирали в този PL/SQL блок, към SQL машината по време на изпълнение. След това тези SQL изрази ще бъдат обработени отделно от SQL машината. След като приключи обработката им, SQL машината връща резултата обратно към PL/SQL машината. Така че последният може да доведе до комбиниран резултат. Това прескачане на контрола насам-натам се нарича превключване на контекста.
Как превключването на контекста влияе върху производителността на заявката?
Превключването на контекста има пряко влияние върху производителността на заявката. Колкото по-голям е скачането на контролите, толкова по-големи ще бъдат режийните разходи, което от своя страна ще влоши производителността. Това означава, че по-малкото превключване на контекста, по-добре ще бъде производителността на заявката.
Сега сигурно си мислите „Не можем ли да направим нещо по въпроса?“ Можем ли да намалим тези контролни преходи? Има ли все пак с помощта на които можем да намалим превключвателите на контекста? Отговорът на всички тези въпроси е да, ние имаме опция, която може да ни помогне. Тази опция е клауза за групово събиране .
Какво е клауза за групово събиране?
Клаузата за групово събиране компресира множество превключватели в един превключвател на контекста и повишава ефективността и производителността на PL/SQL програма.
Клаузата за групово събиране намалява прескачането на множество контроли, като събира всички извиквания на SQL изрази от програмата PL/SQL и ги изпраща до SQL Engine само с едно движение и обратно.
Къде можем да използваме клауза за групово събиране?
Клаузата за групово събиране може да се използва с клаузите SELECT-INTO, FETCH-INTO и RETURN-INTO.
С помощта на Bulk Collect Statement ние можем да ИЗБЕРЕМ, ВМЪКВАМЕ, АКТУАЛИЗИРАМЕ или ИЗТРИВАМЕ големи набори от данни от обекти на база данни, като таблици или изгледи.
Какво е групова обработка на данни?
Процесът на извличане на партиди данни от PL/SQL машина за изпълнение към SQL машина и обратно се нарича групова обработка на данни.
Колко отчета за групова обработка на данни имаме?
Имаме една клауза за обработка на групови данни което е групово събиране и едно изявление за обработка на групови данни което е FORALL в Oracle Database.
Чувал съм, че клаузата за групово събиране използва както неявни, така и изрични курсори?
Да, чухте го правилно. Можем да използваме клауза за групово събиране или в SQL изявление, или с израза FETCH. Когато използваме клауза за групово събиране с SQL оператор, т.е. SELECT INTO, той използва имплицитен курсор. Докато ако използваме клауза за групово събиране с израза FETCH, тя използва изричен курсор.
Това беше бързо въведение в първата клауза за обработка на данни в PL/SQL, която е BULK COLLECT. Ще научим за втория израз за групова обработка на данни, след като приключим с първия. Междувременно не забравяйте да се абонирате за нашия канал в YouTube, защото в следващия урок ще научим как можем да подобрим ефективността на SQL изявление с помощта на клауза за групово събиране.
Благодаря и приятен ден!