TIMING در اوراکل اپکس

در فرآیند توسعه ی برنامه‌های تحت وب با  Oracle APEX، یکی از دغدغه‌های اصلی توسعه ‌دهندگان، کارایی گزارش‌ هاست. از آن ‌جایی که گزارش‌ها معمولاً شامل  Queryهای سنگین بر روی جداول بزرگ هستند، دانستن مدت زمان اجرای آن‌ها می‌تواند به پایش و بهبود عملکرد کمک شایانی کند.
Oracle APEX  برای همین منظور یک جای‌نگهدار (Placeholder) داخلی به نام #TIMING# فراهم کرده است که در گزارش‌ها قابل استفاده است.

TIMINGچیست؟

#TIMING# یک Placeholder اختصاصی گزارش‌ها در Oracle APEX است که بعد از اجرای Query گزارش، با زمان اجرای همان گزارش (بر حسب ثانیه) جایگزین می‌شود.

به بیان ساده:

وقتی گزارشی اجرا می‌شود، APEX مدت زمان اجرای SQL مربوط به آن را محاسبه می‌کند. سپس اگر در قالب یا ناحیه‌ای از گزارش عبارت #TIMING# قرار داشته باشد، این عبارت با مقدار محاسبه‌شده جایگزین می‌شود. در نتیجه، خروجی چیزی شبیه به مثال زیر خواهد بود:

TIMING در اوراکل اپکس

کاربرد اصلی

  • پایش و عیب‌یابی کارایی Queryها
  • مقایسه‌ی سرعت گزارش‌ها قبل و بعد از بهینه‌سازی
  • اطلاع‌رسانی به توسعه‌دهنده یا مدیر سیستم

توجه: معمولاً نمایش این اطلاعات برای کاربران نهایی توصیه نمی‌شود و بیشتر برای محیط توسعه و تست کاربرد دارد.

موارد استفاده از #TIMING# :

  • Classic Report
  • Interactive Report (IR)

نکته مهم: عبارت #TIMING# باید در بخشی از قالب (Template) قرار گیرد که پس از اجرای Query رندر می‌شود (مانند Footer یا ناحیه‌ی After Rows).
در غیر این صورت، مقدار آن به‌صورت خالی نمایش داده خواهد شد.

روش های استفاده :

1. قرار دادن در Footer گزارش

ساده‌ترین روش این است که در تنظیمات Region گزارش، داخل Footer متن زیر را بنویسید:

TIMING در اوراکل اپکس

2. قرار دادن در Template گزارش

برای استفاده‌ی استانداردتر :

  • مسیر: Shared Components → Templates → Report
  • قالب گزارش موردنظر( مثلاً Standard ) را باز کنید.
  • در بخش After Rows یا Footer عبارت زیر را اضافه کنید:

<div class=”t-Report-info”>زمان اجرا: #TIMING# ثانیه</div>

از این به بعد هر گزارشی که از این Template استفاده کند، زمان اجرا را نمایش خواهد داد.

همچنین می‌توانید از #ROWS_FETCHED# و #TOTAL_ROWS# نیز بهره ببرید:

#ROWS_FETCHED#: تعداد ردیف‌های واکشی‌شده در همان صفحه گزارش.

#TOTAL_ROWS#: تعداد کل ردیف‌های خروجی Query، بدون در نظر گرفتن صفحه‌بندی.

TIMING در اوراکل اپکس

نکات و محدودیت‌ها

  • وابسته به صفحه‌بندی: در گزارش‌های صفحه‌بندی‌شده، تنها زمان اجرای همان صفحه محاسبه می‌شود و نه کل داده‌ها.
  • نمایش  #ROWS_FETCHED# و #TOTAL_ROWS# در Classic Report: در InteractiveReport  معمولاً فقط #TIMING#  نمایش داده می‌شود، چون IR سیستم شمارش و پیام‌های پیش‌فرض خودش را دارد (مثل «نمایش 1 تا 50 از 328»).
  • تحت تأثیر Cache : اگر Region Caching فعال باشد، #TIMING#  ثابت می ماند.
  • قالب‌بندی ثابت: مقدار همیشه به‌صورت ثانیه و با سه رقم اعشار نمایش داده می‌شود و امکان تغییر آن وجود ندارد.
  • عدم پشتیبانی در IG:  برای Interactive Grid باید از روش‌های دیگر( Instrumentation یا لاگ‌گیری سفارشی)  استفاده کرد.

تفاوت #TIMING# با Page Processing Time

Oracle APEX قابلیتی دارد به نام Page Processing Time که مدت زمان پردازش کل صفحه را نشان می‌دهد.

تفاوت‌ها:

#TIMING# : فقط زمان اجرای Query گزارش

Page Processing Time: زمان کل پردازش صفحه شامل همه Regionها، فرآیندها و اجزای دیگر

برای یادگیری جامع و گام‌به‌گام تمامی مفاهیم، پیشنهاد می‌کنیم به دوره آموزش مقدماتی اوراکل APEX مراجعه کنید و از پایه تا سطح پیشرفته با این پلتفرم قدرتمند آشنا شوید.

پیام بگذارید

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

اسکرول به بالا