یکی دیگر از قابلیتهای جدید اوراکل در نسخه 21c، امکان استفاده از هینت RESULT_CACHE در محیط Physical Standby است که در ادامه نحوه استفاده از ان توضیح داده شده است.
***مدت زمان اجرای پرس و جوی زیر، در دیتابیس primary حدودا یک دقیقه است:
–primary:
SQL> select count(*) from usef.tbl1;
COUNT(*)
———-
62775296
Elapsed: 00:01:06.45
SQL> /
COUNT(*)
———-
62775296
Elapsed: 00:01:03.61
با استفاده از هینت result_cache این زمان به زیر یک ثانیه کاهش پیدا می کند!
–primary:
SQL> select /*+ result_cache */ count(*) from usef.tbl1;
COUNT(*)
———-
62775296
Elapsed: 00:01:20.74
SQL> select /*+ result_cache */ count(*) from usef.tbl1;
COUNT(*)
———-
62775296
Elapsed: 00:00:00.00
اجرای این پرس و جو در محیط استندبای حدودا 30 ثانیه زمان می برد(استندبای در محیط ما منابع بهتری نسبت به primary دارد!):
–Physical Standby:
SQL> select count(*) from usef.tbl1;
COUNT(*)
———-
62775296
Elapsed: 00:00:35.75
SQL> /
COUNT(*)
———-
62775296
Elapsed: 00:00:34.53
استفاده از هینت result_cache در محیط استندبای، تاثیری در مدت زمان اجرای پرس و جو ندارد:
–Physical Standby:
SQL> select /*+ result_cache */ count(*) from usef.tbl1;
COUNT(*)
———-
62775296
Elapsed: 00:00:26.42
SQL> select /*+ result_cache */ count(*) from usef.tbl1;
COUNT(*)
———-
62775296
Elapsed: 00:00:28.15
برای استفاده از result cache در محیط دیتاگارد، ابتدا باید خصیصه RESULT_CACHE را برای جدول فعال کرد:
–primary:
SQL> alter table usef.tbl1 RESULT_CACHE (STANDBY ENABLE);
Table altered.
با این تغییر، پرس وجو با سرعت بسیار خوبی در محیط دیتاگارد اجرا خواهد شد:
–Physical Standby:
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
—————- ——————–
PHYSICAL STANDBY READ ONLY WITH APPLY
SQL> select /*+ result_cache */ count(*) from usef.tbl1;
COUNT(*)
———-
62775296
Elapsed: 00:00:18.02
SQL> select /*+ result_cache */ count(*) from usef.tbl1;
COUNT(*)
———-
62775296
Elapsed: 00:00:00.00