برنامه نویسی

جمع آوری انبوه | پارتیشن بندی | اجرای موازی | نماهای مادی شده | SQL پویا | توابع جدول خط لوله | مجموعه داده های بزرگ

Summarize this content to 400 words in Persian Lang
توضیح مفصل مفاهیم با تعاریف و مثال‌هایی برای هر یک از تکنیک‌های مدیریت مجموعه داده‌های بزرگ در اوراکل:

جمع آوری انبوه

تعریف: BULK COLLECT مکانیزمی است که در PL/SQL برای واکشی چندین ردیف در یک مجموعه PL/SQL (مانند یک آرایه یا جدول) در یک سوئیچ زمینه واحد استفاده می‌شود و هزینه‌های سربار واکشی ردیف‌ها را یکی یکی کاهش می‌دهد.

مثال:

اعلام کنیدTYPE emp_table_type جدول emp%ROWTYPE است.emp_table emp_table_type;شروع کنیدSELECT * جمع آوری انبوه در emp_table FROM emp.پایان

توضیح: این تکنیک به جای واکشی یک ردیف در یک زمان، تمام سطرها را از جدول emp بازیابی می کند و آنها را در مجموعه emp_table در یک واکشی ذخیره می کند.

FORALL برای عملیات DML انبوه

تعریف: FORALL یک دستور PL/SQL است که برای انجام عملیات DML انبوه (INSERT، UPDATE، DELETE) با استفاده از مجموعه ای از داده ها استفاده می شود، که دستور DML را برای تمام عناصر مجموعه در یک عملیات اجرا می کند.

مثال:

اعلام کنیدTYPE emp_id_type جدول emp.empno%TYPE است.emp_ids emp_id_type := emp_id_type(7839, 7566, 7698);شروع کنیدبرای همه من در شاخص های emp_idبه روز رسانی emp SET sal = sal * 1.1 WHERE empno = emp_ids(i);پایان

توضیح: این کار حقوق کارمندان را با مقادیر empno مشخص شده در مجموعه emp_ids به صورت انبوه به روز می کند، که سریعتر از اجرای به روز رسانی های فردی برای هر کارمند است.

پارتیشن بندی

تعریف: پارتیشن بندی تمرین تقسیم یک جدول پایگاه داده بزرگ به قطعات کوچکتر و قابل مدیریت تر به نام پارتیشن است که معمولاً بر اساس کلیدهایی مانند تاریخ یا محدوده است. این عملکرد و مدیریت پرس و جو را بهبود می بخشد.

مثال:

ایجاد جدول فروش (sales_id NUMBER،sales_date DATE،مبلغ NUMBER)تقسیم بندی بر اساس محدوده (تاریخ_فروش) (PARTITION p_2021 مقادیر کمتر از (TO_DATE('01-JAN-2022'، 'DD-MON-YYYY'))،PARTITION p_2022 مقادیر کمتر از (TO_DATE('01-JAN-2023'، 'DD-MON-YYYY')))

توضیح: جدول فروش توسط ستون sales_date تقسیم بندی شده است که به مدیریت و پرس و جو محدوده خاصی از داده ها به طور موثرتر کمک می کند.

اجرای موازی

تعریف: اجرای موازی یک پرس و جو بزرگ را به وظایف کوچکتری تقسیم می کند که همزمان بر روی چندین هسته CPU اجرا می شوند و زمان کلی اجرای پرس و جو را کاهش می دهد.

مثال:

SELECT /*+ PARALLEL(4) */ * FROM sales WHERE sales_date BETWEEN TO_DATE('01-JAN-2021', 'DD-MON-YYYY') AND TO_DATE('31-DEC-2021', 'DD-MON- YYYY');

توضیح: نکته PARALLEL(4) به Oracle می گوید که از 4 هسته CPU برای اجرای پرس و جو به طور همزمان استفاده کند و سرعت بازیابی داده ها از جدول فروش را افزایش دهد.

نماهای مادی شده

تعریف: نماهای متریال شده، اشیای پایگاه داده ای هستند که نتیجه یک پرس و جو را به صورت فیزیکی ذخیره می کنند و می توانند به صورت دوره ای تجدید شوند و نیاز به اجرای مجدد پرس و جوهای پیچیده را کاهش دهند.

مثال:

ایجاد نمای موادی mv_sales_summary ASSELECT product_id, SUM (مقدار) AS total_salesاز فروشGROUP BY product_id;

توضیح: نمای تحقق یافته mv_sales_summary داده های فروش خلاصه شده را ذخیره می کند، بنابراین پرس و جوها می توانند این داده های از پیش محاسبه شده را به جای محاسبه مجدد هر بار واکشی کنند.

شاخص ها

تعریف: ایندکس ها اشیای پایگاه داده ای هستند که بازیابی ردیف ها را بر اساس ستون های خاص بهینه می کنند و زمان اجرای پرس و جو را به ویژه برای پرس و جوهای SELECT سرعت می بخشند.

مثال:

ایجاد INDEX idx_sales_date در تاریخ فروش (sales_date);

توضیح: شاخص idx_sales_date عملکرد پرس و جو را هنگام فیلتر کردن بر اساس sales_date بهبود می بخشد، زیرا پایگاه داده می تواند به سرعت ردیف های مربوطه را با استفاده از فهرست پیدا کند.

گزینه Oracle In-Memory

تعریف: گزینه Oracle In-Memory به جداول و نماها اجازه می دهد تا برای دسترسی سریعتر در حافظه (RAM) ذخیره شوند و ورودی/خروجی دیسک را دور بزنند، که برای عملکرد در بارهای کاری تحلیلی بسیار مهم است.

مثال:

ALTER TABLE فروش INMEMORY;

توضیح: این دستور جدول فروش را برای ذخیره شدن در حافظه برای پردازش سریعتر پرس و جو مشخص می کند.

راهکارهای Exadata/Data Warehouse

تعریف: Exadata یک راه حل سخت افزاری است که برای اجرای وظایف پردازش داده در مقیاس بزرگ بهینه شده است. این شامل ذخیره سازی با کارایی بالا، سخت افزار تخصصی و نرم افزار طراحی شده برای ذخیره سازی داده ها و تجزیه و تحلیل است.

مثال: راه حل های مربوط به Exadata معمولاً در سطح زیرساخت توسط Oracle پیکربندی و مدیریت می شوند، بنابراین نمونه های خاص به تنظیمات محیط Oracle شما بستگی دارد.

توضیح: Exadata سخت افزار بهینه سازی شده را برای حجم داده های بزرگ، به ویژه برای پرس و جوهای پیچیده در انبار داده و تجزیه و تحلیل ارائه می دهد.

SQL پویا

تعریف: Dynamic SQL به شما این امکان را می دهد که عبارات SQL را به صورت پویا در زمان اجرا بسازید و اجرا کنید و انعطاف پذیری را برای رسیدگی به پرس و جوهای مختلف که نمی توانند از پیش تعریف شوند فراهم می کند.

مثال:

اعلام کنیدv_sql VARCHAR2 (1000);شروع کنیدv_sql := 'انتخاب * FROM' || جدول_نام؛EXECUTE IMMEDIATE v_sql.پایان

توضیح: این دستور SQL پویا در زمان اجرا بر اساس متغیر table_name ساخته می شود و به شما امکان می دهد هر پرس و جو را به صورت پویا اجرا کنید.

توابع جدول خط لوله

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

مثال:

ایجاد یا جایگزین کردن تابع get_emp_list بازگشت t_emp_list PIPELINED ASCURSOR c_emp IS SELECT ename FROM emp;شروع کنیدبرای rec در c_emp LOOPPIPE ROW (rec.ename);END LOOP;بازگشت؛پایان

توضیح: تابع get_emp_list با استفاده از دستور PIPE ROW نام کارمندان را هر بار یک ردیف برمی گرداند. این به مصرف کننده تابع اجازه می دهد تا قبل از بازیابی کل مجموعه نتایج، پردازش ردیف ها را آغاز کند.

DML انبوه با FORALL و مجموعه ها

تعریف: این روش اجازه می دهد تا عملیات درج، به روز رسانی یا حذف انبوه با استفاده از مجموعه ها انجام شود و با کاهش سوئیچ های زمینه، عملکرد را بهبود بخشد.

مثال:

اعلام کنیدTYPE emp_type جدول emp%ROWTYPE است.emp_data emp_type;شروع کنیدSELECT * جمع آوری انبوه در emp_data FROM emp.FORALL I IN 1..emp_data.COUNTUPDATE emp SET sal = sal * 1.1 WHERE empno = emp_data(i).empno;پایان

توضیح: این مثال داده های کارکنان را در یک مجموعه واکشی می کند و سپس از FORALL برای به روز رسانی حقوق همه کارکنان مجموعه در یک دسته استفاده می کند.

نتیجه گیری

با استفاده از این تکنیک‌ها مانند جمع‌آوری انبوه، FORALL، پارتیشن‌بندی، اجرای موازی، نمایش‌های متریال‌سازی شده، نمایه‌ها، گزینه‌های درون حافظه، Exadata، Dynamic SQL، توابع جدول لوله‌ای، و انبوه DML، می‌توانید عملکرد کوئری‌ها و عملیات DML را به میزان قابل توجهی بهبود بخشید. مجموعه داده های بزرگ در اوراکل هر تکنیک هدف متفاوتی را دنبال می کند و می تواند برای دستیابی به عملکرد مطلوب برای موارد استفاده خاص ترکیب شود.

توضیح مفصل مفاهیم با تعاریف و مثال‌هایی برای هر یک از تکنیک‌های مدیریت مجموعه داده‌های بزرگ در اوراکل:

  1. جمع آوری انبوه

تعریف: BULK COLLECT مکانیزمی است که در PL/SQL برای واکشی چندین ردیف در یک مجموعه PL/SQL (مانند یک آرایه یا جدول) در یک سوئیچ زمینه واحد استفاده می‌شود و هزینه‌های سربار واکشی ردیف‌ها را یکی یکی کاهش می‌دهد.

مثال:

اعلام کنید
TYPE emp_table_type جدول emp%ROWTYPE است.
emp_table emp_table_type;
شروع کنید
SELECT * جمع آوری انبوه در emp_table FROM emp.
پایان

توضیح: این تکنیک به جای واکشی یک ردیف در یک زمان، تمام سطرها را از جدول emp بازیابی می کند و آنها را در مجموعه emp_table در یک واکشی ذخیره می کند.

  1. FORALL برای عملیات DML انبوه

تعریف: FORALL یک دستور PL/SQL است که برای انجام عملیات DML انبوه (INSERT، UPDATE، DELETE) با استفاده از مجموعه ای از داده ها استفاده می شود، که دستور DML را برای تمام عناصر مجموعه در یک عملیات اجرا می کند.

مثال:

اعلام کنید
TYPE emp_id_type جدول emp.empno%TYPE است.
emp_ids emp_id_type := emp_id_type(7839, 7566, 7698);
شروع کنید
برای همه من در شاخص های emp_id
به روز رسانی emp SET sal = sal * 1.1 WHERE empno = emp_ids(i);
پایان

توضیح: این کار حقوق کارمندان را با مقادیر empno مشخص شده در مجموعه emp_ids به صورت انبوه به روز می کند، که سریعتر از اجرای به روز رسانی های فردی برای هر کارمند است.

  1. پارتیشن بندی

تعریف: پارتیشن بندی تمرین تقسیم یک جدول پایگاه داده بزرگ به قطعات کوچکتر و قابل مدیریت تر به نام پارتیشن است که معمولاً بر اساس کلیدهایی مانند تاریخ یا محدوده است. این عملکرد و مدیریت پرس و جو را بهبود می بخشد.

مثال:

ایجاد جدول فروش (
sales_id NUMBER،
sales_date DATE،
مبلغ NUMBER
)
تقسیم بندی بر اساس محدوده (تاریخ_فروش) (
PARTITION p_2021 مقادیر کمتر از (TO_DATE('01-JAN-2022'، 'DD-MON-YYYY'))،
PARTITION p_2022 مقادیر کمتر از (TO_DATE('01-JAN-2023'، 'DD-MON-YYYY'))
)

توضیح: جدول فروش توسط ستون sales_date تقسیم بندی شده است که به مدیریت و پرس و جو محدوده خاصی از داده ها به طور موثرتر کمک می کند.

  1. اجرای موازی

تعریف: اجرای موازی یک پرس و جو بزرگ را به وظایف کوچکتری تقسیم می کند که همزمان بر روی چندین هسته CPU اجرا می شوند و زمان کلی اجرای پرس و جو را کاهش می دهد.

مثال:

SELECT /*+ PARALLEL(4) */ * FROM sales WHERE sales_date BETWEEN TO_DATE('01-JAN-2021', 'DD-MON-YYYY') AND TO_DATE('31-DEC-2021', 'DD-MON- YYYY');

توضیح: نکته PARALLEL(4) به Oracle می گوید که از 4 هسته CPU برای اجرای پرس و جو به طور همزمان استفاده کند و سرعت بازیابی داده ها از جدول فروش را افزایش دهد.

  1. نماهای مادی شده

تعریف: نماهای متریال شده، اشیای پایگاه داده ای هستند که نتیجه یک پرس و جو را به صورت فیزیکی ذخیره می کنند و می توانند به صورت دوره ای تجدید شوند و نیاز به اجرای مجدد پرس و جوهای پیچیده را کاهش دهند.

مثال:

ایجاد نمای موادی mv_sales_summary AS
SELECT product_id, SUM (مقدار) AS total_sales
از فروش
GROUP BY product_id;

توضیح: نمای تحقق یافته mv_sales_summary داده های فروش خلاصه شده را ذخیره می کند، بنابراین پرس و جوها می توانند این داده های از پیش محاسبه شده را به جای محاسبه مجدد هر بار واکشی کنند.

  1. شاخص ها

تعریف: ایندکس ها اشیای پایگاه داده ای هستند که بازیابی ردیف ها را بر اساس ستون های خاص بهینه می کنند و زمان اجرای پرس و جو را به ویژه برای پرس و جوهای SELECT سرعت می بخشند.

مثال:

ایجاد INDEX idx_sales_date در تاریخ فروش (sales_date);

توضیح: شاخص idx_sales_date عملکرد پرس و جو را هنگام فیلتر کردن بر اساس sales_date بهبود می بخشد، زیرا پایگاه داده می تواند به سرعت ردیف های مربوطه را با استفاده از فهرست پیدا کند.

  1. گزینه Oracle In-Memory

تعریف: گزینه Oracle In-Memory به جداول و نماها اجازه می دهد تا برای دسترسی سریعتر در حافظه (RAM) ذخیره شوند و ورودی/خروجی دیسک را دور بزنند، که برای عملکرد در بارهای کاری تحلیلی بسیار مهم است.

مثال:

ALTER TABLE فروش INMEMORY;

توضیح: این دستور جدول فروش را برای ذخیره شدن در حافظه برای پردازش سریعتر پرس و جو مشخص می کند.

  1. راهکارهای Exadata/Data Warehouse

تعریف: Exadata یک راه حل سخت افزاری است که برای اجرای وظایف پردازش داده در مقیاس بزرگ بهینه شده است. این شامل ذخیره سازی با کارایی بالا، سخت افزار تخصصی و نرم افزار طراحی شده برای ذخیره سازی داده ها و تجزیه و تحلیل است.

مثال: راه حل های مربوط به Exadata معمولاً در سطح زیرساخت توسط Oracle پیکربندی و مدیریت می شوند، بنابراین نمونه های خاص به تنظیمات محیط Oracle شما بستگی دارد.

توضیح: Exadata سخت افزار بهینه سازی شده را برای حجم داده های بزرگ، به ویژه برای پرس و جوهای پیچیده در انبار داده و تجزیه و تحلیل ارائه می دهد.

  1. SQL پویا

تعریف: Dynamic SQL به شما این امکان را می دهد که عبارات SQL را به صورت پویا در زمان اجرا بسازید و اجرا کنید و انعطاف پذیری را برای رسیدگی به پرس و جوهای مختلف که نمی توانند از پیش تعریف شوند فراهم می کند.

مثال:

اعلام کنید
v_sql VARCHAR2 (1000);
شروع کنید
v_sql := 'انتخاب * FROM' || جدول_نام؛
EXECUTE IMMEDIATE v_sql.
پایان

توضیح: این دستور SQL پویا در زمان اجرا بر اساس متغیر table_name ساخته می شود و به شما امکان می دهد هر پرس و جو را به صورت پویا اجرا کنید.

  1. توابع جدول خط لوله

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

مثال:

ایجاد یا جایگزین کردن تابع get_emp_list بازگشت t_emp_list PIPELINED AS
CURSOR c_emp IS SELECT ename FROM emp;
شروع کنید
برای rec در c_emp LOOP
PIPE ROW (rec.ename);
END LOOP;
بازگشت؛
پایان

توضیح: تابع get_emp_list با استفاده از دستور PIPE ROW نام کارمندان را هر بار یک ردیف برمی گرداند. این به مصرف کننده تابع اجازه می دهد تا قبل از بازیابی کل مجموعه نتایج، پردازش ردیف ها را آغاز کند.

  1. DML انبوه با FORALL و مجموعه ها

تعریف: این روش اجازه می دهد تا عملیات درج، به روز رسانی یا حذف انبوه با استفاده از مجموعه ها انجام شود و با کاهش سوئیچ های زمینه، عملکرد را بهبود بخشد.

مثال:

اعلام کنید
TYPE emp_type جدول emp%ROWTYPE است.
emp_data emp_type;
شروع کنید
SELECT * جمع آوری انبوه در emp_data FROM emp.
FORALL I IN 1..emp_data.COUNT
UPDATE emp SET sal = sal * 1.1 WHERE empno = emp_data(i).empno;
پایان

توضیح: این مثال داده های کارکنان را در یک مجموعه واکشی می کند و سپس از FORALL برای به روز رسانی حقوق همه کارکنان مجموعه در یک دسته استفاده می کند.

نتیجه گیری

با استفاده از این تکنیک‌ها مانند جمع‌آوری انبوه، FORALL، پارتیشن‌بندی، اجرای موازی، نمایش‌های متریال‌سازی شده، نمایه‌ها، گزینه‌های درون حافظه، Exadata، Dynamic SQL، توابع جدول لوله‌ای، و انبوه DML، می‌توانید عملکرد کوئری‌ها و عملیات DML را به میزان قابل توجهی بهبود بخشید. مجموعه داده های بزرگ در اوراکل هر تکنیک هدف متفاوتی را دنبال می کند و می تواند برای دستیابی به عملکرد مطلوب برای موارد استفاده خاص ترکیب شود.

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

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

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

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