برنامه نویسی

جمع آوری و پیش بینی در 🎯pl/sql چیست؟ چه زمانی از آن استفاده می شود؟

جمع آوری و پیشرو در PL/SQL چیست؟ چه زمانی از آن استفاده می شود؟

هنگام کار بر روی مجموعه داده های بزرگ با PL/SQL ، می توان از جمع آوری فله و پیشانی برای بهبود عملکرد استفاده کرد. این ساختارها با استفاده از فرآیند داده جمعی به جای پردازش داده های خط ، هزینه های CPU و I/O را کاهش می دهند.

در مصاحبه PL/SQL ، “چه فله ای جمع آوری و از بین می رود؟ چه زمانی استفاده می شود؟ ، تفاوت در عملکرد چیست؟” ممکن است با سؤالاتی مانند.

در این مقاله ، ما بررسی خواهیم کرد که جمع آوری و پیش بینی های فله ، نحوه عملکرد آن و تأثیر عملکرد چیست.

  1. جمع آوری و پیش بینی فله چیست؟

collect جمع آوری فله: تعداد زیادی از خطوط را به صورت جمعی به یک مجموعه (آرایه) جذب می کند.
📌 Forel: تمام داده ها را در یک مجموعه با یک فرآیند DML (درج ، بروزرسانی ، حذف) به پایگاه داده ارسال می کند.

این دو ساختار با تبدیل رویکرد پردازش مبتنی بر خط PL/SQL به پردازش جمعی ، بهره وری را افزایش می دهند.

  1. جمع آوری انبوه استفاده

جمع آوری فله در عملیات خواندن داده ها استفاده می شود. به جای خواندن یک ردیف ، تمام خطوط را به صورت جمعی بارگذاری می کند.

مراحل استفاده:
1⃣ مجموعه تعریف شده است (نوع … جدول …)
2⃣ فله را جمع آوری و نتیجه را تا مجموعه انتخاب کنید
3⃣ فرآیند سریعتر انجام می شود
🔹 جمع آوری فله – مثال

DECLARE
TYPE t_hasta IS TABLE OF hastalar%ROWTYPE; -- Koleksiyon türü tanımla
v_hastalar t_hasta; -- Koleksiyon değişkeni
BEGIN
-- BULK COLLECT ile toplu veri çekme
SELECT * BULK COLLECT INTO v_hastalar FROM hastalar;
-- Koleksiyon içindeki verileri işleme
FOR i IN 1 .. v_hastalar.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(v_hastalar(i).ad || ' ' || v_hastalar(i).soyad);
END LOOP;
END;

📌 توضیحات:
✔ جمع آوری فله در → همه داده ها را در مجموعه بارگذاری می کند.
✔ v_hastalar.count → نشان می دهد که چند خط بارگیری می شوند.
✔ سریعتر کار می کند زیرا به صورت جداگانه انجام نمی شود.

  1. با استفاده از forll

Forall برای سرعت بخشیدن به عملیات DML (درج ، به روزرسانی ، حذف) استفاده می شود.
به جای انجام عملیات DML در هر خط با حلقه معمولی ، کل مجموعه به عنوان یک فرآیند واحد به پایگاه داده ارسال می شود.

مراحل استفاده:
1⃣ مجموعه تعریف شده است
2⃣ داده های جمع آوری با FORTL پردازش می شوند
🔹 استفاده از قلعه – مثال (فرآیند درج جمعی)

DECLARE
TYPE t_hasta IS TABLE OF hastalar%ROWTYPE;
v_hastalar t_hasta;
BEGIN
-- BULK COLLECT ile hastaları koleksiyona al
SELECT * BULK COLLECT INTO v_hastalar FROM hastalar WHERE id < 100;
-- FORALL ile yeni tabloya toplu ekleme
FORALL i IN 1 .. v_hastalar.COUNT
INSERT INTO hastalar_yedek VALUES v_hastalar(i);
COMMIT;
END;

📌 توضیحات:
✔ forll's 1. v_hastalar.
✔ برای هر خط جداگانه اجرا نمی شود ، یکباره کار می کند.
✔ عملکرد را بهبود می بخشد زیرا انتقال از موتور PL/SQL به SQL را کاهش می دهد.

  1. جمع آوری فله و مقایسه عملکرد شرور

شرح تصویر

📢 چرا سریعتر؟

Normal FOR LOOP içinde SELECT yapıldığında, her satır için SQL motoruna gidip geliriz.
BULK COLLECT ile tek seferde veri çekilir.
FORALL ile tek seferde DML işlemi yapılır.
Bu sayede, PL/SQL ve SQL motoru arasındaki bağlatılar azalır ve performans artar. 🚀
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. سوالات مربوط به جمع آوری و پیش بینی در مصاحبه های PL/SQL

در مصاحبه های PL/SQL ، ممکن است با سؤالات زیر در مورد استفاده از جمع آوری فله و پیش بینی شده روبرو شوید:
سوال 1: تفاوت فله و تفاوت Forall چیست؟

پاسخ:

BULK COLLECT, toplu veri okumak için kullanılır.
FORALL, toplu veri yazmak için kullanılır.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سوال 2: مزیت استفاده از جمع آوری فله چیست؟

پاسخ:

Tek tek FETCH yapmak yerine, tüm veriyi bir koleksiyona alır.
PL/SQL ve SQL motoru arasındaki iletişimi azaltarak performansı artırır.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سوال 3: چرا باید به جای استفاده از Fancel ، حلقه را ترجیح دهیم؟

پاسخ:

FOR LOOP içinde DML işlemi her satır için tek tek çalışır.
FORALL ise tüm işlemi SQL motoruna tek seferde gönderir, bu da performansı artırır.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. جمع آوری و فله ای که هنگام استفاده در نظر می گیرد

📌 هنگام استفاده از جمع آوری فله:

Çok büyük veri setleri bellekte fazla yer kaplayabilir!
Çekilecek veri miktarına göre LIMIT kullanabilirsin.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Fetch cursor_adi فله جمع آوری در Collection_Name Limit 1000 ؛

📌 هنگام استفاده از Fortal:

Sıralı bir koleksiyon kullanılmalıdır.
Eğer bir hata olursa, tüm işlemler iptal olur.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

FORALL i IN 1 .. v_hastalar.COUNT SAVE EXCEPTIONS
INSERT INTO hastalar_yedek VALUES v_hastalar(i);

📢 شما می توانید با استفاده از استثنائات ذخیره اشتباهات را ضبط کنید!

  1. پایان

به طور خلاصه:
✅ جمع آوری فله برای خواندن داده های جمعی استفاده می شود.
forll برای نوشتن داده های جمعی استفاده می شود.
✅ با کاهش عملیات غیر ضروری بین PL/SQL و SQL موتور ، عملکرد را بهبود می بخشد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا